您可以在 SQL Server 2005 上使用 FREETEXT() 对关键字执行 AND 搜索吗?
有一个 请求 当使用多个术语时,使 SO 搜索默认为 AND 样式功能而不是当前 OR。
官方回应是:
并不像听起来那么简单; 我们使用 SQL Server 2005 的 FREETEXT() 函数,我找不到指定 AND 与 OR 的方法 - 你可以吗?
那么,有办法吗?
有一个 数量的资源,但我不是专家。
There is a request to make the SO search default to an AND style functionality over the current OR when multiple terms are used.
The official response was:
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?
So, is there a way?
There are a number of resources on it I can find, but I am not an expert.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
据我所知,在 SQL 2005(也不是 2008,afaik)下使用 FREETEXT() 时不可能执行 AND 操作。
FREETEXT 查询在设计上会忽略布尔运算符、邻近运算符和通配符运算符。 但是你可以这样做:
或者这就是我的想法:)
-- 这个想法是让它评估为布尔值,这样你就可以使用布尔运算符。 不知道这样会不会报错。 我认为它应该有效。 但参考材料指出,这在设计上是不可能的。
使用 CONTAINS() 而不是 FREETEXT() 可能会有所帮助。
As far as I've seen, it is not possible to do AND when using FREETEXT() under SQL 2005 (nor 2008, afaik).
A FREETEXT query ignores Boolean, proximity, and wildcard operators by design. However you could do this:
Or that's what I think :)
-- The idea is make it evaluate to Boolean, so you can use boolean operators. Don't know if this would give an error or not. I think it should work. But reference material is pointing to the fact that this is not possible by design.
The use of CONTAINS() instead of FREETEXT() could help.
好的,这个更改是 - 我们现在使用带有隐式
AND
的CONTAINS()
,而不是FREETEXT()
及其隐式OR
。OK, this change is in -- we now use
CONTAINS()
with implicitAND
instead ofFREETEXT()
and its implicitOR
.我刚刚开始阅读有关自由文本的内容,所以请耐心等待。 如果您想要做的是允许搜索标签(例如 VB),还可以找到标记为 VB6、Visual Basic、VisualBasic 和 VB.Net 的内容,那么这些值是否不会被设置为数据库同义词库中的同义词而不是查询参数?
如果情况确实如此,MSDN 上的链接解释了如何将项目添加到同义词库。
I just started reading about freetext so bear with me. If what you are trying to do is allow searches for a tag, say VB, also find things tagged as VB6, Visual Basic, VisualBasic and VB.Net, wouldn't those values be set as synonyms in the DB's Thesaurus rather than query parameters?
If that is indeed the case, this link on MSDN explains how to add items to the Thesaurus.