У меня есть полнотекстовая индексированная таблица в SQL Server 2008, которую я пытаюсь запросить для точного соответствия фраз с использованием FULLTEXT.Я не верю, что использование CONTAINS или LIKE подходит для этого, потому что в других случаях запрос может быть не точным (пользователь не заключает фразу в двойные кавычки), и в целом я хочу гибкость FREETEXT.
В соответствии с документацией [MSDN] для FREETEXT:
Если строка freetext_string заключена в двойные кавычки, вместо этого выполняется сопоставление фразы;stemming и тезаурус не выполняются.
, что заставило бы меня поверить в такой запрос:
SELECT Description
FROM Projects
WHERE FREETEXT(Description, '"City Hall"')
будет возвращать результаты только в том случае, если термин "City Hall" появляется вПоле описания, но вместо этого я получаю следующие результаты:
1 Проект рампы для гандикапа в Manning Hall.
2 Исследование антенны.Клиент: Инженерный департамент города Крэнстон
3 Структурное расследование в отношении ущерба от пожара в Международном Зале Славы Тенниса.
4 Расследование крыши для предполагаемого проекта спутника в Вестнике Холла.
... и т. Д. 1021 *
Очевидно, что эти результаты включают хотя бы одно из слов в моей фразе, но не саму фразу.Что еще хуже, я думал, что результаты будут оценены, но два результата, которые я на самом деле хотел (потому что они включают в себя фактическую фразу), похоронены.
SELECT Description
FROM Projects
WHERE Description LIKE '%City Hall%'
1 Капитальный ремонт существующих и внутренних помещений существующегоздание муниципалитета Куинси, штат Массачусетс
2 Краткое структурное исследование башни мэрии Потакета, пораженной утечками.
Я уверен, что это тот случай, когда я не понимаю документацию, но есть ли способ достичь того, что я ищу?А именно, чтобы иметь возможность передать строку поиска без кавычек и получить именно то, что я получаю сейчас, или с кавычками и получить только эту точную фразу?