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

发布于 2024-07-04 12:05:31 字数 660 浏览 7 评论 0原文

有一个 请求 当使用多个术语时,使 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

柒夜笙歌凉 2024-07-11 12:05:31

据我所知,在 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() 可能会有所帮助。

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:

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

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.

猫九 2024-07-11 12:05:31

好的,这个更改是 - 我们现在使用带有隐式 ANDCONTAINS(),而不是 FREETEXT() 及其隐式 OR

OK, this change is in -- we now use CONTAINS() with implicit AND instead of FREETEXT() and its implicit OR.

我刚刚开始阅读有关自由文本的内容,所以请耐心等待。 如果您想要做的是允许搜索标签(例如 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.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文