Full-Text Search – instalacja i konfiguracja

Wyszukiwanie pełnotekstowe, to mechanizm wydajnego przeszukiwania kolumn o charakterze tekstowym. W tym celu zakładany jest specjalny indeks na tabeli, która ma zostać przeszukana. Zapytania wykonywane na takim indeksie pozwalają dokonać językowego przeszukiwania opartego na regułach określonego języka. Zwrócone rezultaty, to obiekty zawierające przynajmniej jedno dopasowanie (tzw. hit). Poniżej został opsiany proces instalacji oraz konfiguracji polskich narzędzi do Full-Text Search na przykładzie Microsoft SQL Server.

W pierwszej kolejności należy sprawdzić czy komponent FTS jest zainstalowany na serwerze. W tym celu można posłużyć się funkcją fulltextserviceproperty z odpowiednim parametrem:

SELECT fulltextserviceproperty('IsFulltextInstalled')

Jeśli nie, to brakujący składnik można doinstalować do istniejącej instancji serwera z instalatora w wydaniu Advanced Services (SQLEXPRADV_x64_ENU.exe).

SQL Server 2012 Setup

Po restarcie usługi serwera oraz upewnieniu się, że usługa wyszukiwania pełnotekstowego jest uruchomiona (SQL Full-text Filter..) należy sprawdzić, czy zainstalowane są polskie narzędzia językowe. Można się o tym przekonać na dwa sposoby. Pierwszy z nich to odpytanie systemowej tabeli fulltext_languages. Drugi, bardziej preferowany, to wykonanie systemowej procedury sp_help_fulltext_system_components z odpowiednim parametrem:

EXEC sp_help_fulltext_system_components 'wordbreaker'

Jeśli wpis z wartością 1045 w kolumnie componentname znajduje się w wynikach, oznacza to, że narzędzia są zainstalowane i można rozpocząć tworzenie struktur bazodanowych do FTS.

Wordbreaker w SQL Server 2012

Dodatkowe kroki dla Ms SQL Server 2005 i 2008

Niewiedzieć czemu, domyślnie SQL Server w wersji 2005 i 2008 nie instaluje narzędzi do języka polskiego. W celu manualnej instalacji trzeba dodać poniższe klucze do rejestru systemowego

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSearch\CLSID\{B8713269-2D9D-4BF5-BF40-2615D75723D8}]
@="lrpolish.dll"
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSearch\CLSID\{CA665B09-4642-4C84-A9B7-9B8F3CD7C3F6}]
@="lrpolish.dll"
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSearch\Language\plk]
"TsaurusFile"="tsplk.xml"
"Locale"=dword:00000415
"WBreakerClass"="{CA665B09-4642-4C84-A9B7-9B8F3CD7C3F6}"
"StemmerClass"="{B8713269-2D9D-4BF5-BF40-2615D75723D8}"

gdzie frazę ‘MSSQL10_50.MSSQLSERVER’ należy zastąpić odpowiednią nazwą wersji instancji, dla której instalowane są narzędzia, a następnie uruchomić systemową procedurę sp_fulltext_service z odpowiednimi parametrami

EXEC sp_fulltext_service 'load_os_resources', 1
EXEC sp_fulltext_service 'update_languages'

Pierwsza instrukcja pozwoli na ładowanie systemowych filtrów, które pochodzą spoza SQL Server (dla wersji 2005 oraz 2008 narzędzia językowe przygotowane są przez ‘zewnętrzną’ firmę), natomiast druga instrukcja nakazuje serwerowi odświeżyć listę dostępnych języków dla indeksów FTS.

W przypadku kiedy serwer bazodanowy zwróci komunikat o treści ‘Word breaking timed out for the full-text query string. This can happen if the wordbreaker took a long time to process […]’ należy uruchomić poniższe dwie instrukcje, które wyłączą weryfikowanie narzędzi językowych dla FTS, czego rezultatem będzie brak komunikatu.

EXEC sp_fulltext_service 'verify_signature', 0
EXEC sp_fulltext_service 'restart_all_fdhosts'

W tym momencie można ponownie uruchomić procedurę sp_help_fulltext_system_components w celu sprawdzenia czy polskie narzędzia językowe zostały poprawnie zainstalowane na instancji serwera.

Wordbreaker w SQL Server 2008

Struktury bazodanowe

Założenie struktur jest banalnie proste i ogranicza się do zaledwie dwóch instrukcji. W pierwszej kolejności należy utworzyć katalog, gdzie składowany będzie indeks FTS:

CREATE FULLTEXT CATALOG [documents_catalog] AS DEFAULT

Następnie stworzyć sam indeks FTS:

CREATE FULLTEXT INDEX ON [dbo].[Documents]
(
	DocumentContent LANGUAGE 1045
) KEY INDEX [PK_Documents]

Powyższa instrukcja zawiera cztery istotne elementy:

  1. tabela na której zakładany jest indeks FTS,
  2. kolumna indeksowana przez FTS,
  3. język (1045 to kod języka polskiego),
  4. unikalny klucz z tabeli, który jednoznacznie identyfikuje obiekt.

Wynik powyższych instrukcji można skontrolować wykonując procedury:

exec sp_help_fulltext_catalogs
exec sp_help_fulltext_tables
exec sp_help_fulltext_columns

Rezultaty FTS

Na tym etapie, wyszukiwanie pełnotekstowe na zadanej kolumnie jest gotowe do działania/odpytania.

W następnym artykule zaprezentuję możliwości zadawania zapytań FTS.

Podbij

Facebook
Twitter
LinkedIn
Google+
http://kurzyniec.pl/artykuly/full-text-search/

Leave a Reply

Your email address will not be published. Required fields are marked *