Лучший способ реализовать хранимую процедуру с полнотекстовым поиском - PullRequest
1 голос
/ 06 февраля 2009

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

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

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

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

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

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

Ответы [ 3 ]

0 голосов
/ 17 февраля 2009

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

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

0 голосов
/ 17 февраля 2009

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

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

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

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

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

0 голосов
/ 10 февраля 2009

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

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