Удерживаемые запросы не распознают маленькие слова
-
26-09-2019 - |
Вопрос
я использую CONTAINSTABLE
Для поиска двух столбцов таблицы. Как только поиск содержит маленькие слова, такие как «« '»для' 'A', поиск не возвращает результатов, даже если они на самом деле присутствуют в столбце.
Быстрый пример. Поиск колонна содержит текст. «Система должна быть обновлена»
Следующий SQL возвращает 0 строк
SELECT * FROM Incident WHERE (TicketNumber IN (
SELECT TicketNumber FROM [Action] FT_TBL INNER JOIN
CONTAINSTABLE(Action, Text, '"system" AND "needs" AND "to" AND "upgraded" AND NOT "Search Summary"') KEY_TBL ON FT_TBL.ID = KEY_TBL.[KEY]
UNION
SELECT TicketNumber FROM [Incident] FT_TBL INNER JOIN
CONTAINSTABLE(Incident, Subject, '"system" AND "needs" AND "to" AND "upgraded"') AS KEY_TBL ON FT_TBL.TicketNumber = KEY_TBL.[KEY]))
Когда-то «до» опущен, он работает нормально:
SELECT * FROM Incident WHERE (TicketNumber IN (
SELECT TicketNumber FROM [Action] FT_TBL INNER JOIN
CONTAINSTABLE(Action, Text, '"system" AND "needs" AND "upgraded" AND NOT "Search Summary"') KEY_TBL ON FT_TBL.ID = KEY_TBL.[KEY]
UNION
SELECT TicketNumber FROM [Incident] FT_TBL INNER JOIN
CONTAINSTABLE(Incident, Subject, '"system" AND "needs" AND "upgraded"') AS KEY_TBL ON FT_TBL.TicketNumber = KEY_TBL.[KEY]))
Как может CONTAINSTABLE
использоваться с этими меньшими словами, или они должны быть оставлены в целом? Если эти меньшие слова на самом деле значимы в поисках, как они могут быть включены в поиск?
Решение
Это не «маленькие слова», это общие слова, которые находятся на списке стоп. Они игнорируются.
Видеть Стопорные слова и остановки на Бол.
Другие советы
Пожалуйста, посмотри конец моего ответа При создании и привлечении пользовательского стоп-сигнала полнотекстового текста, начиная с пустой. Я проверил, и с пустым вашим запросом работает с «к», «Будь», «« »,« для »и т. Д.
Обновлять:
SQL Server 2005 должен иметь MSSQL FTDATA Shoreng.txt.
Я бы подтвердил, чтобы просмотреть ответы на Вопрос: «Шумовые слова в SQL Server 2005 Полный текстовый поиск»