当使用多个术语时,请求将 SO 搜索默认为与当前 OR 相比的 AND 样式功能。
官方的回应是:
不像听起来那么简单;我们使用 SQL Server 2005 的FREETEXT()函数,但我找不到指定 AND 与 OR 的方法 - 你可以吗?
那么,有没有办法呢?
我可以找到很多关于它的资源,但我不是专家。
当使用多个术语时,请求将 SO 搜索默认为与当前 OR 相比的 AND 样式功能。
官方的回应是:
不像听起来那么简单;我们使用 SQL Server 2005 的FREETEXT()函数,但我找不到指定 AND 与 OR 的方法 - 你可以吗?
那么,有没有办法呢?
我可以找到很多关于它的资源,但我不是专家。
据我所见,在 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 的内容,那么这些值不会在 DB 的词库中设置为同义词而不是查询参数?
如果确实如此,MSDN 上的此链接说明了如何将项目添加到同义词库。
好的,这个变化在——我们现在使用CONTAINS()
with implicitAND
而不是FREETEXT()
和它的 implicit OR
。