2009-12-09 2 views
4

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

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

'al hamra' 

в

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

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

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

Название: Al Hamra, Автор: Джек Браун Жанр: фантастика Аль Karawan, Автор: Al Ганц, Жанр: Мелодрама

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

ответ

1

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

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

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

+0

Запрос показал 'al' как точное совпадение. Я обнаружил, что «аль» был в английском стоп-листе. Поэтому я очистил стоп-лист и добавил «al» в Neutral. Однако теперь он не отображается, когда я запускаю http://pastebin.com/m6d9fc5f4. Я подтвердил, что он присутствует, потому что я не могу его повторно добавить (дает ошибку). В запросе, о котором вы упоминали, показывается «al» как точное совпадение. –

+0

О, чтобы уточнить, мой каталог перечисляет все полные текстовые индексы в «Нейтральном». –

+0

Попытался изменить язык стоп-листов и всех текстовых индексов на английский. Список остановок теперь показывает использование запроса http://pastebin.com/m6d9fc5f4, но выполнение вашего запроса по-прежнему показывает «al» как точное соответствие :( –

Смежные вопросы