Лучший способ реализовать хранимую процедуру с полнотекстовым поиском

StackOverflow https://stackoverflow.com/questions/521270

Вопрос

Я хотел бы запустить поиск с помощью полнотекстового движка MSSQL, где задан следующий пользовательский ввод:"Голливуд-сквер"

Я хочу, чтобы в результатах были как голливудские, так и квадратные [ы].

Я могу создать метод на веб-сервере (C #, ASP.NET) для динамического создания инструкции sql, подобной этой:

SELECT TITLE
FROM MOVIES
WHERE CONTAINS(TITLE,'"hollywood*"')
AND CONTAINS(TITLE, '"square*"')

Достаточно просто.ОДНАКО я хотел бы использовать это в хранимой процедуре для повышения скорости и безопасности добавления параметров.

Можно мне взять свой торт и съесть его тоже?

Это было полезно?

Решение

Я согласился с вышеизложенным, изучите пункты И

SELECT TITLE
FROM MOVIES
WHERE CONTAINS(TITLE,'"hollywood*" AND "square*"')

Однако вам не обязательно разделять входные предложения, вы можете использовать переменную

SELECT TITLE
FROM MOVIES
WHERE CONTAINS(TITLE,@parameter)

кстати поиск точного термина (содержит) поиск любого термина во фразе (свободный текст)

Другие советы

В последний раз, когда мне приходилось это делать (с MSSQL Server 2005), я в конечном итоге перенес всю функциональность поиска на Lucene (хотя версия Java Lucene.Я полагаю, что Net теперь существует).Я возлагал большие надежды на полнотекстовый поиск, но эта конкретная проблема так сильно раздражала меня, что я сдался.

Вы пробовали использовать логический оператор AND в вашей строке?Я передаю необработанную строку в свой sproc и вставляю 'И' между словами.

http://msdn.microsoft.com/en-us/library/ms187787.aspx

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top