Полнотекстовый поиск: поиск шумовых слов

У меня есть база данных в SQL Server 2008 с индексами полнотекстового поиска. Я определил стоп-слово «al» в стоп-листе. Однако, когда я ищу любую фразу с ключевым словом «al», слово «al» по-прежнему используется в рейтинге.

Это может быть связано с тем, что я разбиваю условия поиска и реконструирую их. Затем я выполняю поиск по нескольким полям и ранжирую результаты: http://pastebin.com/fdce11ff. Эта функция разбивает поиск

'al hamra' 

в

("*al*" ~ "*hamra*") OR ("*al*" OR "*hamra*") 

для полнотекстового поиска.

Представьте себе этот сценарий:

Имя: Аль Хамра, Автор: Джек Браун, Жанр: Художественная литература Аль Караван, Автор: Аль Ханц, Жанр: Романтика

Теперь поиск по запросу 'al hamra' будет возвращать 'Al Karawan', несмотря на то, что 'al' находится в стоп-листе. Почему это? Я думал, стоп-листы заставят слова потерять свой вес?


person Community    schedule 09.12.2009    source источник


Ответы (1)


Шумовые слова специфичны для кодовых страниц; вы добавили его в правильный? Вы можете использовать sys.dm_fts_parser, чтобы проверить это (ниже), это также может работать лучше, чем ваше ручное разбиение слов в коде (или нет).

SELECT special_term, display_term
FROM sys.dm_fts_parser
  (' "al hamra" ', 1033, 0, 0)

Предположим, вы используете кодовую страницу 1033. Если ваше шумовое слово находится в кодовой странице, которую вы ожидаете, то оно должно отображаться как шумовое слово в списке.

person Community    schedule 09.12.2009
comment
Запрос показал «al» как точное совпадение. Я обнаружил, что «al» был в английском стоп-листе. Поэтому я очистил стоп-лист и снова добавил «al» в «нейтральный». Однако теперь он не отображается, когда я запускаю pastebin.com/m6d9fc5f4. Я подтвердил, что он присутствует, потому что я не могу его повторно добавить (выдает ошибку). Упомянутый вами запрос по-прежнему показывает «al» как точное совпадение. - person Donnie Thomas; 10.12.2009
comment
Да, чтобы уточнить, в моем каталоге все полнотекстовые индексы указаны как «нейтральные». - person Donnie Thomas; 10.12.2009
comment
Пробовал менять язык стоп-листов и всех полнотекстовых указателей на английский. В стоп-листе теперь отображается запрос pastebin.com/m6d9fc5f4, но при выполнении вашего запроса по-прежнему отображается "al" как полное совпадение :( - person Donnie Thomas; 10.12.2009