tsql – 使用多个列的CONTAINS进行FullText搜索,并使用谓词 – AND

前端之家收集整理的这篇文章主要介绍了tsql – 使用多个列的CONTAINS进行FullText搜索,并使用谓词 – AND前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个搜索表,比如说4列文本数据进行搜索. @H_404_2@我做这样的事情:

SELECT * FROM dbo.SearchTable
WHERE CONTAINS((co1,col2,col3,col4),'term1 AND term2')
@H_404_2@如果term1和term2位于同一列,则它似乎只包含返回true.有没有办法指定所有的列应该包含在AND中?

@H_404_2@如果没有,我的想法是将所有的搜索列和JSON粘贴到一个.这样我可以全文搜索它们,但仍然容易地提取.NET中的各个列.我假设索引器不会有这个问题,将免除JSON字符和引号.它是否正确?

@H_404_2@谢谢

@H_404_2@编辑

@H_404_2@考虑到JSON的想法,爬网程序还会对属性名称进行索引,所以我必须将{name},{details},{long_details}重命名为{x1},{x2},{x3}不要在搜索中挑选希望如果他们这么短,他们不会被索引.

@H_404_2@EDIT2

@H_404_2@我可以创建一个基于系统Stoplist的Stoplist,并将属性名称放入.

解决方法

这应该工作:
SELECT * FROM dbo.SearchTable
WHERE CONTAINS((co1,'term1')
AND CONTAINS((co1,'term2');
@H_404_2@或者,您可以添加一个具有全文索引的新计算列.添加如下列:

computedCol AS col1 + ' ' + col2 + ' ' + col3 + ' ' + col4
@H_404_2@并创建全文索引:

CREATE FULLTEXT INDEX ON SearchTable (computedCol LANGUAGE 1033)
KEY INDEX pk_SearchTable_yourPrimaryKeyName
@H_404_2@那么你可以这样做:

SELECT * FROM dbo.SearchTable
WHERE CONTAINS(*,'term1 AND term2')

猜你在找的HTML相关文章