Кажется, работает очень хорошо, но я буду внимательно следить за производительностью.

ольно типичном сценарии у меня в веб-приложении есть текстовое поле «Поиск», в котором пользовательский ввод передается непосредственно в хранимую процедуру, которая затем использует полнотекстовое индексирование для поиска по двум полям в двух таблицах, которые объединяются с использованием соответствующих ключей.

Я использую предикат CONTAINS для поиска в полях. Перед передачей строки поиска я делаю следующее:

SET @ftQuery = '"' + REPLACE(@query,' ', '*" OR "') + '*"'

изменениязамок в"* * ИЛИ" замок * ", например. Это необходимо, потому что я хочу, чтобы люди могли искать насаз и получить результаты длязамок.

WHERE CONTAINS(Building.Name, @ftQuery) OR CONTAINS(Road.Name, @ftQuery)

Проблема в том, что теперь, когда я добавил к концу каждого слова подстановочный знак, слова-шумы (например,) также добавлены символы подстановки и, следовательно, больше не отображаются как выпадающие. Это означает, что поискзамок вернет элементы со словами, такими кактеатр и т.п.

Первым делом я подумал об изменении ИЛИ на И, но, похоже, это просто не возвращает совпадений, если в запросе используется слово-шум.

Все, чего я пытаюсь добиться, - это позволить пользователю вводить несколько разделенных пробелами слов, которые представляют либо полноту, либо префикс слов, по которым он ищет, в любом порядке - и отбрасывать шумовые слова, такие как от их ввода (в противном случае, когда они ищутзамок они получают большой список предметов с результатом, который им нужен где-то посередине списка.

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

Благодарен за любую помощь!

Джейми

Ответы на вопрос(4)

Ваш ответ на вопрос