我们可以在SQL Server 2005上使用FREETEXT()对关键字执行AND搜索吗?

时间:2020-03-05 18:42:38  来源:igfitidea点击:

当使用多个术语时,要求将SO搜索默认为当前OR的AND样式功能。

官方的答复是:

not as simple as it sounds; we use SQL Server 2005's FREETEXT() function, and I can't find a way to specify AND vs. OR -- can you?

那么,有办法吗?

我可以找到很多资源,但是我不是专家。

解决方案

回答

据我所知,在SQL 2005(也不是2008,afaik)下使用FREETEXT()时,是不可能做AND的。

FREETEXT查询在设计上会忽略布尔,接近和通配符。但是,我们可以这样做:

WHERE FREETEXT('You gotta love MS-SQL') > 0
 AND FREETEXT('You gotta love MySQL too...') >  0

或者那就是我的想法:)

-想法是使它评估为布尔值,因此我们可以使用布尔值运算符。不知道这是否会产生错误。我认为应该可以。但是参考资料指出了这样一个事实,即设计无法做到这一点。

使用CONTAINS()而不是FREETEXT()可能会有所帮助。

回答

我刚刚开始阅读有关自由文本的内容,请耐心等待。如果我们想做的是允许搜索标记(例如VB),并且还找到标记为VB6,Visual Basic,VisualBasic和VB.Net的内容,则不会将这些值设置为数据库同义词库中的同义词,而不是查询参数?

如果确实如此,则MSDN上的此链接说明了如何向同义词库添加项目。

回答

好的,此更改已生效-我们现在将CONTAINS()与隐含的AND一起使用,而不是FREETEXT()及其隐含的OR。