太阳黑子/ solr复杂查询

时间:2014-02-11 17:54:23

标签: ruby-on-rails solr sunspot sunspot-rails sunspot-solr

说我有一些我想搜索的产品。

我想找到一些最小值和/或最大值的产品,比如长度,宽度和高度。

我能做到:

any_of do

  with(:length).greater_than_or_equal_to(length_min)
  with(:length).less_than_or_equal_to(length_max)

  with(:width).greater_than_or_equal_to(width_min)
  with(:width).less_than_or_equal_to(width_min)

  with(:height).greater_than_or_equal_to(height_min)
  with(:height).less_than_or_equal_to(height_min)
end

这将为我提供符合其中任何一种的产品。

我想退回所有产品,但按照符合最多标准的产品排序。

例如:

产品A在所有长度,宽度和高度范围内首先是,然后产品C只匹配长度和宽度,然后产品B不匹配任何长度,宽度或高度范围。

任何人都知道怎么做?

非常感谢 瑞克

1 个答案:

答案 0 :(得分:0)

查看https://github.com/sunspot/sunspot上的文档,如果任何项目符合任何条件,那么使用any_of do似乎会返回结果。

# Posts that do not have an expired time or have not yet expired
Post.search do
  any_of do
    with(:expired_at).greater_than(Time.now)
    with(:expired_at, nil)
  end
end