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

我有一个搜索表,比如说4列文本数据进行搜索.

我做这样的事情:

SELECT * FROM dbo.SearchTable
WHERE CONTAINS((co1,col2,col3,col4),'term1 AND term2')

如果term1和term2位于同一列,则它似乎只包含返回true.有没有办法指定所有的列应该包含在AND中?

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

谢谢

编辑

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

EDIT2

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

解决方法

这应该工作:
SELECT * FROM dbo.SearchTable
WHERE CONTAINS((co1,'term1')
AND CONTAINS((co1,'term2');

或者,您可以添加一个具有全文索引的新计算列.添加如下列:

computedCol AS col1 + ' ' + col2 + ' ' + col3 + ' ' + col4

并创建全文索引:

CREATE FULLTEXT INDEX ON SearchTable (computedCol LANGUAGE 1033)
KEY INDEX pk_SearchTable_yourPrimaryKeyName

那么你可以这样做:

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

相关文章

HTML代码中要想改变字体颜色,常常需要使用CSS样式表。CSS是...
HTML代码如何让字体盖住图片呢?需要使用CSS的position属性及...
HTML代码字体设置 在HTML中,我们可以使用标签来设置网页中的...
在网页设计中,HTML代码的字体和字号选择是非常重要的一个环...
HTML(Hypertext Markup Language,超文本标记语言)是一种用...
外链是指在一个网页中添加一个指向其他网站的链接,用户可以...