当前位置:  开发笔记 > 编程语言 > 正文

在SQL Server 2005全文索引中删除干扰词

如何解决《在SQLServer2005全文索引中删除干扰词》经验,为你挑选了1个好方法。

在一个非常典型的场景中,我的Web应用程序上有一个"搜索"文本框,其中用户输入直接传递给存储过程,然后使用全文索引搜索两个表中的两个字段,这两个表使用适当的键连接.

我正在使用CONTAINS谓词来搜索字段.在传递搜索字符串之前,我执行以下操作:

SET @ftQuery = '"' + REPLACE(@query,' ', '*" OR "') + '*"'

例如,将城堡改为"*"或"城堡*".这是必要的,因为我希望人们能够在cas上搜索并获得城堡的结果.

WHERE CONTAINS(Building.Name, @ftQuery) OR CONTAINS(Road.Name, @ftQuery)

问题是,现在我已经附加通配符每个单词的末尾,噪音词(如)也通配符追加,因此不再出现会被丢弃.这意味着搜索城堡将返回带有剧院等单词的项目.

将OR更改为AND是我的第一个想法,但如果在查询中使用了干扰词,则似乎只返回不匹配.

所有我试图实现是允许用户输入多个空格分隔单词respresent无论是整体还是他们搜索的词的前缀,以任意顺序-落音词,如从输入(否则当他们搜索城堡时,他们会得到一个大项目列表,结果他们需要在列表中间的某个位置.

我可以继续实现我自己的干扰消除程序,但似乎全文索引应该能够处理的东西.

感谢任何帮助!

杰米



1> galuvian..:

在存储索引之前,会删除干扰词.所以不可能编写一个搜索停用词的查询.如果您真的想要启用此行为,则需要编辑停用词列表.(http://msdn.microsoft.com/en-us/library/ms142551.aspx)然后重新构建索引.

推荐阅读
ar_wen2402851455
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有