加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 资源网站 > 资源 > 正文

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')

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读