Полнотекстовый поиск на сервере SQL: какие средства разбиения по умолчанию используются в английском языке?

Где я могу найти список стандартных средств разбиения по словам для английского языка в полнотекстовом поиске сервера SQL?

2 ответа

С хранимой процедурой sys.dm_fts_parser Вы можете проверить заданные строки с помощью средства разбиения по словам. Следующий запрос проверяет все символы ASCII от char(32) до char(255) и возвращает список активных в настоящее время символов разбиения по словам.

declare @i integer
declare @cnt integer
set @i=32
while @i<255
begin
  set @cnt=0
  select @cnt=COUNT(1) FROM sys.dm_fts_parser ('"word1'+CHAR(@i)+'word2"', 1033, 0, 0)
  if @cnt>1
  begin
  print CONCAT('ASCII ', @i, ': ', char(@i))
  end
  set @i=@i+1
end

Результат:

ASCII 32:  
ASCII 33: !
ASCII 34: "
ASCII 35: #
ASCII 36: $
ASCII 37: %
ASCII 38: &
ASCII 40: (
ASCII 41: )
ASCII 42: *
ASCII 43: +
... and so on ...

Источник: https://stuart-moore.com/generating-a-list-of-full-text-word-breakers-for-sql-server/

Список языков, с которыми связаны средства разбиения по словам, можно получить, выполнив следующий запрос:

SELECT * FROM sys.fulltext_languages; 

Я не уверен, есть ли сохраненная процедура или внутренняя таблица, в которой показан файл.dll, связанный с каждым языком, но его можно найти в следующем разделе реестра:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\{SQL Instance Name}\MSSearch\CLSID\

Языковые сопоставления для каждого CLSID хранятся в MSSearch\Language.

Нейтральные средства разбиения по словам (пробел и пунктуация) + значения, специфичные для локали. Таким образом, это будет зависеть от того, какой английский язык работает.

См. http://technet.microsoft.com/en-us/library/ms142509(v=sql.100).aspx

Другие вопросы по тегам