使用全文搜索实现存储过程的最佳方法

时间:2009-02-06 17:31:45

标签: sql sql-server stored-procedures full-text-search dynamic-sql

我想使用MSSQL全文引擎运行搜索,其中给出以下用户输入: “好莱坞广场”

我希望结果中包含好莱坞和正方形。

我可以在Web服务器(C#,ASP.NET)上创建一个方法来动态生成这样的sql语句:

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

够容易。但是,我希望在存储过程中增加速度,增加参数的安全性。

我可以吃蛋糕吗?

3 个答案:

答案 0 :(得分:0)

上一次我不得不这样做(使用MSSQL Server 2005)我最终将整个搜索功能转移到Lucene(Java版本,尽管Lucene.Net现在存在,我相信)。我对全文搜索寄予厚望,但这个具体问题让我非常恼火。

答案 1 :(得分:0)

您是否尝试在字符串中使用AND逻辑运算符?我将一个原始字符串传递给我的sproc并在单词之间添加'AND'。

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

答案 2 :(得分:0)

我同意上述内容,查看AND条款

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

但是你不必分割输入句子,你可以使用变量

SELECT TITLE
FROM MOVIES
WHERE CONTAINS(TITLE,@parameter)
顺便说一下 搜索确切的术语(包含) 搜索短语中的任何术语(自由文本)