使用 Sphinx 搜索多列

发布于 2024-09-10 15:21:24 字数 622 浏览 8 评论 0原文

我有带有列的模型产品:

name, number, description

为此模型定义的索引如下所示:

define_index do
  indexes :name, :sortable => true
  indexes :number
  indexes :description
  where "amount > 0"
  has :price
end

由于描述中可能有很多随机单词,我有时想将其从搜索中排除(当用户单击复选框“不在描述中搜索”时)。

我访问了 sphinx 页面并发现了以下内容:

@(name, number) *pencil* *123*

看来我不明白 sphinx 是如何工作的。当我执行搜索时,

*pencil* *123*

在名称中找到“铅笔”,在数字中找到“123”,我得到 1 个结果。但是当我执行时

@(name, number) *pencil* *123*

没有找到结果。

按列搜索是否有所不同?

I have model Products with columns:

name, number, description

Index defined for this model looks like this:

define_index do
  indexes :name, :sortable => true
  indexes :number
  indexes :description
  where "amount > 0"
  has :price
end

Since in description can be lots of random words I want to exclude it from searching sometimes (when user clicks chceckbox 'don't search in descriptions').

I went to the sphinx page and found following:

@(name, number) *pencil* *123*

And it seems like I don't understand how sphinx works. When I execute search

*pencil* *123*

word 'pencil' is found in name and '123' is found in number and I get 1 result. But when I execute

@(name, number) *pencil* *123*

no results are found.

Is searching by columns somehow different?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

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

发布评论

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

评论(2

比忠 2024-09-17 15:21:24

您只能在使用 :extended 匹配模式时搜索字段 - 如果您使用 :conditions,Thinking Sphinx 会自动设置此模式 - 但您要自己构建多字段查询,这就是为什么这没有发生。试试这个:

Product.search "@(name, number) *pencil* *123*", :match_mode => :extended

希望这有帮助。

You can only search on fields when using the :extended match mode - Thinking Sphinx sets this automatically if you use :conditions - but you're constructing a multi-field query yourself, hence why this isn't happening. Try this:

Product.search "@(name, number) *pencil* *123*", :match_mode => :extended

Hope this helps.

噩梦成真你也成魔 2024-09-17 15:21:24

这都是关于空间的:/
这有效:

@(name,number) *pencil* *123*

It was all about spaces :/
This works:

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