我有一个搜索表,比如说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
解决方法
这应该工作:
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')