我们正在使用SQL服务器2005年在一个项目。该系统的用户有能力搜索的一些对象,通过使用关键词'.我们的方式实施,这是通过创建一个完整的文本目录的重要列各表可能包含这些关键词,然后使用含有搜索的关键词的用户输入的搜索盒在这一指数。

因此,例如,让我们说你有电影的对象,要让用户搜索的关键词的题目和主体的文章,然后我们就指标题和情节列,然后做些什么,如:

SELECT * FROM Movies WHERE CONTAINS(Title, keywords) OR CONTAINS(Plot, keywords)

(实际上它是一个比较先进,但没有什么非常复杂的)

一些用户数字增加到他们的搜索,例如他们想要找到终结者2'.这里的问题是,我知道,默认情况下SQL服务器不会引短的话,这样做的一个搜索这样的:

SELECT * FROM Movies WHERE CONTAINS(Title, '"Terminator 2"')

实际上相当于这样做:

SELECT * FROM Movies WHERE CONTAINS(Title, '"Terminator"') <-- notice the missing '2'

我们得到大量的虚假结果。

有没有办法强迫SQL服务器到索引的小说?好的,我宁愿只有索引 号码 像是1,2,21,等等。我不知道在哪里定义的编制索引的标准,或者即使它可能为特定的作为。


好吧,我没有,删除"噪声"从名单,现在的行为是有点不同,但仍然不是你所期望的。

搜索将不会为"终结者2"(我只是做这个,我的雇主可能不会真的很高兴,如果我透露什么我们正在做的...无论如何,条件是有点不同,但原则上相同),我不让 任何东西, 但我知道有的对象包含两个词。

也许我做错了什么?我删除了所有数字1...9从我的噪音配置ENG,埃努并诺(性)、再生的指标,并试图搜索。

有帮助吗?

解决方案

这些"小"正考虑"噪声"将通过的全部文字索引。你可以定制的列表的噪音的话。此 博客 提供更多的细节。你需要重新填充你的全部文字索引的时候你改变噪音的词的文件。

其他提示

我知道关于噪音的词的文件,但我不为什么你的"终结者2"的例子仍然给你的问题。你可能想试试问这个的 MSDN数据库引擎论坛 那里的人专门在这样的事情。

你可以将包含(或CONTAINSTABLE)简单那里的条件:

SELECT*from电影,其中包含(标题,'"终结者2"')和标题like'%的终结者2%'

虽然含有找到所有的终结者在那里将消除'终止的1'.

当然在发动机的智能够开始与不包含类似的条件。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top