tsql – 使用多个列的CONTAINS进行FullText搜索,并使用谓词 – A
发布时间:2020-12-14 19:32:16 所属栏目:资源 来源:网络整理
导读:我有一个搜索表,比如说4列文本数据进行搜索. 我做这样的事情: SELECT * FROM dbo.SearchTableWHERE CONTAINS((co1,col2,col3,col4),'term1 AND term2') 如果term1和term2位于同一列,则它似乎只包含返回true.有没有办法指定所有的列应该包含在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') (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |