使用Sphinx搜索多个列

时间:2010-07-22 13:49:08

标签: ruby-on-rails sphinx thinking-sphinx

我有带列的模型产品:

name, number, description

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

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

由于在描述中可能有很多随机单词,我想有时将其排除在搜索之外(当用户点击chceckbox'不在搜索中搜索'时)。

我去了sphinx页面,发现了以下内容:

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

似乎我不明白狮身人面像是如何运作的。当我执行搜索时

*pencil* *123*

单词'pencil'在名称中找到,'123'在数字中找到,我得到1个结果。但是当我执行

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

未找到任何结果。

按列搜索有什么不同吗?

2 个答案:

答案 0 :(得分:2)

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

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

希望这有帮助。

答案 1 :(得分:2)

关于空间的全部内容:/ 这有效:

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