我们在项目中使用SQL Server 2005。系统的用户可以使用“关键字”搜索某些对象。我们实现这一目标的方式是为每个表中可能包含这些'关键字'的重要列创建一个全文目录,然后使用CONTAINS搜索用户在该索引中的搜索框中输入的关键字。例如,假设你有电影对象,并且你想让用户在文章的标题和正文中搜索关键词,那么我们将索引标题和剧情栏目,然后这样做:使SQL Server索引为小数字
SELECT * FROM Movies WHERE CONTAINS(Title, keywords) OR CONTAINS(Plot, keywords)
(它实际上比这更先进一点,但没有什么可怕的复杂)
有些用户添加数字到他们的搜索,因此,例如,他们想找到“终结者2” 。这里的问题是,据我所知,在默认情况下SQL Server将不会指数短线的话,这样做这样一个搜索:
SELECT * FROM Movies WHERE CONTAINS(Title, '"Terminator 2"')
实际上就相当于这样做:
SELECT * FROM Movies WHERE CONTAINS(Title, '"Terminator"') <-- notice the missing '2'
,我们正在获得大量的虚假结果。
有没有办法来强制SQL Server索引小的话吗?优选的是,我宁愿只索引数字像1,2,21,等我不知道在哪里定义索引的标准,或者即使有可能具体为是。
好了,我这样做,删除列表中的“噪音词”,而现在的行为是有点不同,但仍然不是你所期望的东西。
的搜索将不会对“终结者2”(我只是在做这件事,我的雇主可能不是真正的快乐,如果我不方便透露我们在做什么......反正,术语是有点不同,但原理相同),我没有得到什么,但我知道有对象包含这两个单词。
也许我做错了什么?我从ENG,ENU和NEU(中性)的噪声配置中删除了所有数字1 ... 9,重新生成索引,并尝试搜索。