Как заставить ведущие полнотекстовые поисковые запросы работать в SQL Server? - PullRequest
39 голосов
/ 06 августа 2008

Примечание: I am с использованием возможностей полнотекстового поиска SQL, предложений CONTAINS и всего - * является подстановочным знаком в полнотекстовом формате,% - только для предложений LIKE.

В некоторых местах я читал, что поиск с «подстановочными символами» (например, использование «* overflow» для сопоставления со «stackoverflow») не поддерживается в MS SQL. Я рассматриваю возможность использования функции CLR для добавления соответствия регулярному выражению , но мне любопытно посмотреть, какие другие решения могут быть у людей.

Подробнее : Вы можете добавить звездочку только в конце слова или фразы. - вместе с моим эмпирическим опытом: при сопоставлении «myvalue», «my *» работает, но «(звездочка) значение» не возвращает совпадения, если выполнять запрос так же просто, как:

SELECT * FROM TABLENAME WHERE CONTAINS(TextColumn, '"*searchterm"');

Таким образом, моя потребность в обходном пути. Я использую поиск на своем сайте только на реальной поисковой странице - поэтому он должен работать в основном так же, как работает Google (в глазах пользователя типа Джо Сикспака). Не так сложно, но такое совпадение не должно провалиться.

Ответы [ 13 ]

0 голосов
/ 18 октября 2016

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

Обратите внимание на отрывок, в котором говорится: «Однако, если вы укажете« Chain »или« Ch ain », вы не получите ожидаемый результат. подстановочный знак. "

0 голосов
/ 08 августа 2008

Когда дело доходит до полнотекстового поиска, за мои деньги ничто не сравнится Lucene . Доступен порт .Net , который совместим с индексами, созданными в версии Java.

Есть небольшая работа, связанная с тем, что вы должны создавать / поддерживать индексы, но скорость поиска фантастическая, и вы можете создавать всевозможные интересные запросы. Даже скорость индексации довольно хорошая - мы просто полностью перестраиваем наши индексы один раз в день и не беспокоимся об их обновлении.

Например, эта функция поиска работает на Lucene.Net.

0 голосов
/ 06 августа 2008

% Соответствует любому количеству символов _ Соответствует одному символу

Я никогда не использовал полнотекстовое индексирование, но вы можете выполнять довольно сложные и быстрые поисковые запросы, просто используя встроенные строковые функции T-SQL.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...