Udostępnij za pośrednictwem


Konfigurowanie & zarządzanie modułami dzielenia wyrazów & stemmers na potrzeby wyszukiwania (SQL Server)

Dotyczy:programu SQL ServerAzure SQL Database

Dzielniki wyrazów i stemmery przeprowadzają analizę językową wszystkich danych indeksowanych pełnotekstowo. Analiza językowa wykonuje następujące dwie czynności:

  • znajdź granice wyrazów (dzielące wyrazy). separator wyrazów identyfikuje poszczególne wyrazy poprzez określenie, gdzie granice wyrazów istnieją na podstawie reguł leksykalnych języka. Każdy wyraz (znany również jako token ) jest wstawiany do indeksu pełnotekstowego przy użyciu skompresowanej reprezentacji w celu zmniejszenia rozmiaru.

  • Odmiana czasowników (stemming). stemmer generuje odmiany fleksyjne określonego słowa na podstawie reguł tego języka: "running", "ran" i "runner" to różne formy słowa "run."

Podziały wyrazów i stemmery są specyficzne dla języka

Podziały wyrazów i stemmery są specyficzne dla języka, a reguły analizy językowej różnią się w różnych językach. Podziały wyrazów specyficzne dla języka sprawiają, że wynikowe terminy są bardziej dokładne dla tego języka.

Aby użyć elementów podziału wyrazów i stemmerów dostępnych dla wszystkich języków obsługiwanych przez program SQL Server, zwykle nie trzeba podejmować żadnych działań.

  • Jeśli istnieje podział wyrazów dla rodziny języków, ale nie dla określonego podjęzycznego języka, jest używany główny język. Na przykład francuski dzielnik wyrazów jest używany do obsługi tekstu, który jest w języku francuskim kanadyjskim.
  • Jeśli dla określonego języka nie jest dostępny żaden wyłącznik wyrazów, używany jest neutralny wyłącznik wyrazów. W przypadku neutralnego dzielenia wyrazów wyrazy są przerywane na neutralnych znakach, takich jak spacje i znaki interpunkcyjne.

Pobieranie listy obsługiwanych języków

Aby wyświetlić listę języków obsługiwanych przez usługę SQL Server Full-Text Search, użyj następującej instrukcji Transact-SQL. Obecność języka na tej liście wskazuje, że moduły podziału wyrazów są zarejestrowane dla języka.

SELECT * FROM sys.fulltext_languages

Pobierz listę zarejestrowanych dzielników wyrazów

Aby Full-Text Search mogło używać dzielników wyrazów dla języka, muszą być zarejestrowane. W przypadku zarejestrowanych elementów podziału wyrazów skojarzone zasoby językowe - stemmers, wyrazy szumu (stopwords) i pliki tezaurusa - również stają się dostępne dla operacji indeksowania pełnotekstowego i wykonywania zapytań.

Aby wyświetlić listę zarejestrowanych składników podziału wyrazów, użyj następującej instrukcji.

EXEC sp_help_fulltext_system_components 'wordbreaker';  
GO  

Aby uzyskać dodatkowe opcje i więcej informacji, zobacz sp_help_fulltext_system_components (Transact-SQL).

Jeśli dodasz lub usuniesz separator wyrazów

Jeśli dodasz, usuniesz lub zmienisz podział wyrazów, musisz odświeżyć listę identyfikatorów ustawień regionalnych systemu Microsoft Windows (LCID), które są obsługiwane w przypadku indeksowania pełnotekstowego i wykonywania zapytań. Aby uzyskać więcej informacji, zobacz Wyświetlanie lub Zmiana Zarejestrowanych Filtrów i Dzielników Słów.

Ustaw domyślną opcję języka pełnotekstowego

W przypadku zlokalizowanej wersji programu SQL Server instalator programu SQL Server ustawia domyślny język pełnotekstowy dla języka serwera, jeśli istnieje odpowiednie dopasowanie. W przypadku nielokalizowanej wersji programu SQL Server domyślnym językiem pełnotekstowym w opcji jest angielski.

Podczas tworzenia lub zmieniania indeksu pełnotekstowego można określić inny język dla każdej kolumny indeksowanej pełnotekstowo. Jeśli dla kolumny nie określono żadnego języka, wartość domyślna to wartość opcji konfiguracji domyślny język pełnotekstowy.

Notatka

Wszystkie kolumny wymienione w jednej klauzuli funkcji kwerendy pełnotekstowej muszą używać tego samego języka, chyba że opcja LANGUAGE jest określona w zapytaniu. Język używany dla przeszukiwanej kolumny indeksowanej pełnotekstowo określa analizę językową wykonywaną na argumentach predykatów zapytań pełnotekstowych (ZAWIERA i FREETEXT) oraz funkcji (CONTAINSTABLE i FREETEXTTABLE).

Wybieranie języka dla kolumny indeksowanej

Podczas tworzenia indeksu pełnotekstowego zalecamy określenie języka dla każdej indeksowanej kolumny. Jeśli dla kolumny nie określono języka, używany jest domyślny język systemu. Język kolumny określa, który analizator wyrazów i algorytm lematyzujący są używane do indeksowania tej kolumny. Ponadto plik tezaurusa tego języka będzie używany przez zapytania pełnotekstowe w kolumnie.

Podczas wybierania języka kolumn do utworzenia indeksu pełnotekstowego należy wziąć pod uwagę kilka kwestii. Te zagadnienia odnoszą się do tego, jak tekst jest tokenizowany, a następnie indeksowany przez silnik Full-Text. Aby uzyskać więcej informacji, zobacz Choose a Language When Creating a Full-Text Index (Wybieranie języka podczas tworzenia indeksu Full-Text).

Aby wyświetlić język podziału wyrazów określonych kolumn, uruchom następującą instrukcję.

SELECT language_id AS 'LCID' FROM sys.fulltext_index_columns;

Aby uzyskać dodatkowe opcje i więcej informacji, zobacz sys.fulltext_index_columns (Transact-SQL).

Rozwiązywanie problemów z błędami przekroczenia limitu czasu przy łamaniu wyrazów

Błąd przekroczenia limitu czasu wyrazu może wystąpić w różnych sytuacjach. Aby uzyskać informacje o tych sytuacjach i sposobie reagowania w każdej z nich, zobacz MSSQLSERVER_30053.

Informacje o błędzie MSSQLSERVER_30053

Własność Wartość
Nazwa produktu SQL Server
Identyfikator zdarzenia 30053
Źródło zdarzeń MSSQLSERVER
Składnik SQLEngine
Nazwa symboliczna FTXT_QUERY_E_PRZERWANIEROZBIJANIASŁÓW_TIMEOUT
Tekst wiadomości Upłynął czas oczekiwania na podział wyrazów dla ciągu zapytania pełnotekstowego. Może się tak zdarzyć, jeśli analiza ciągu zapytania pełnotekstowego trwała zbyt długo lub jeśli na serwerze działa duża liczba zapytań. Spróbuj ponownie uruchomić zapytanie pod lżejszym obciążeniem.

Wyjaśnienie

Błąd przekroczenia limitu czasu przerwania linii może wystąpić w następujących sytuacjach:

  • Separator słów dla języka zapytań jest niepoprawnie skonfigurowany; na przykład jego ustawienia rejestru są nieprawidłowe.

  • Analizator ciągów nie działa dla konkretnego ciągu zapytania.

  • Mechanizm dzielenia słów zwraca zbyt wiele danych dla określonego ciągu zapytania. Nadmiar danych jest traktowany jako potencjalny atak przepełnienia bufora i powoduje zamknięcie procesu demona filtru (fdhost.exe), który obsługuje usługi łamania wyrazów.

  • Konfiguracja procesu demona filtru jest niepoprawna.

    Najczęstsze problemy z konfiguracją to wygaśnięcie hasła lub zasady domeny, które uniemożliwiają zalogowanie się konta demona filtru.

  • Na instancji serwera występuje bardzo duże obciążenie zapytań; na przykład proces dzielenia wyrazów trwał długo przy przetwarzaniu ciągu zapytania pełnotekstowego lub na serwerze uruchomiona jest duża liczba zapytań. Należy pamiętać, że jest to najmniej prawdopodobna przyczyna.

Akcja użytkownika

Wybierz akcję użytkownika odpowiednią do prawdopodobnej przyczyny przekroczenia limitu czasu w następujący sposób:

Prawdopodobna przyczyna Akcja użytkownika
Podział wyrazów dla języka zapytań jest niepoprawnie skonfigurowany. Jeśli używasz narzędzia do dzielenia wyrazów innej firmy, może ono być niepoprawnie zarejestrowane w systemie operacyjnym. W tym przypadku zarejestruj ponownie "word breaker". Aby uzyskać więcej informacji, zobacz Przywracanie podziałów wyrazów używanych przez wyszukiwanie do poprzedniej wersji.
Separator wyrazów nie działa dla konkretnego ciągu zapytania. Jeśli narzędzie do dzielenia wyrazów jest obsługiwane przez program SQL Server, skontaktuj się z działem obsługi klienta i pomocy technicznej firmy Microsoft.
Segmentator słów zwraca zbyt wiele danych dla określonego ciągu znaków zapytania. Jeśli dzielenie wyrazów jest obsługiwane przez program SQL Server, skontaktuj się z działem obsługi klienta i pomocy technicznej firmy Microsoft.
Konfiguracja procesu demona filtru jest niepoprawna. Upewnij się, że używasz bieżącego hasła i że zasady domeny nie uniemożliwiają zalogowania się konta demona filtru.
Na serwerze działa bardzo wysokie obciążenie zapytań. Spróbuj ponownie uruchomić zapytanie pod lżejszym obciążeniem.

Omówienie wpływu zaktualizowanych elementów podziału wyrazów

Każda wersja programu SQL Server zwykle zawiera nowe podziały wyrazów, które mają lepsze reguły językowe i są dokładniejsze niż wcześniejsze podziały wyrazów. Możliwe, że nowe narzędzia dzielące wyrazy mogą działać nieco inaczej niż moduły podziału wyrazów w indeksach pełnotekstowych zaimportowanych z poprzednich wersji serwera SQL Server.

Jest to istotne, jeśli wykaz pełnotekstowy został zaimportowany podczas uaktualniania bazy danych do bieżącej wersji programu SQL Server. Co najmniej jeden język używany przez indeksy pełnotekstowe w katalogu pełnotekstowym może być teraz skojarzony z nowymi separatorami wyrazów. Aby uzyskać więcej informacji, zobacz Upgrade Full-Text Search.

Zobacz też

STWÓRZ PEŁNOTEKSTOWY INDEKS (Transact-SQL)
ALTER FULLTEXT INDEX (Transact-SQL)
konfigurowanie i zarządzanie stopwords i listami stop dla Full-Text wyszukiwania