太阳黑子Solr小平面与多个过滤器

时间:2011-03-07 13:56:51

标签: ruby-on-rails full-text-search solr sunspot-rails

在太阳黑子solr中,我们可以通过facet对具有相似属性的记录进行分组。但是可以从两个属性进行构面过滤吗?

我尝试在搜索中执行此操作:

facet_search = User.search do
  facet :attribute1, :attribute2
end


facet_search.facet(:attribute1, :attribute2)

有了这个,我一直得到nil值,我确信在attribute1和attribute2上有类似值的记录。

假设有两条记录在attribute1处的值为“orange”。并且这两个记录在attribute2处的值为“eagles”。

我是否可以使用太阳黑子中的功能根据两列对记录进行分组,我该怎么做?

感谢您的帮助。

1 个答案:

答案 0 :(得分:6)

你真的是说你想要过滤吗? Faceting只返回该属性的前n个唯一值。因此,如果attribute1包含颜色,您将返回橙色,红色,蓝色等。任何与您当前搜索匹配的独特颜色。单独进行分区不会过滤您的搜索结果。

根据您的问题,我认为您希望过滤attribute1中的某个值和attribute2中的某个值。为此,您的搜索看起来更像是:

facet_search = User.search do
  # Filter my results...
  with(:attribute1).equal_to("orange")
  with(:attribute2).equal_to("eagle")
end

如果您想获取要在UI或其他内容中显示的attribute1的唯一值,您可能仍会包含facet :attribute1。请注意,声明:attribute1作为构面不会对搜索强加过滤器。