4

在 sunspot solr 中,我们可以通过 facets 对具有相似属性的记录进行分组。但是是否可以从两个属性中进行分面过滤?

我尝试在搜索中这样做:

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


facet_search.facet(:attribute1, :attribute2)

有了这个,我不断得到零值,我确信在属性 1 和属性 2 有具有相似值的记录。

假设有两条记录的attribute1 值为“橙色”。这两条记录在attribute2 处的值为“eagles”。

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

我在这里先向您的帮助表示感谢。

4

1 回答 1

6

你真的是说你要过滤吗?分面只是带回了该属性的前 n 个唯一值。因此,如果 attribute1 包含颜色,您将返回橙色、红色、蓝色等。任何与您当前搜索匹配的唯一颜色。仅分面不会过滤您的搜索结果。

从您的问题来看,我认为您希望按属性 1 中的某个值和属性 2 中的某个值进行过滤。为此,您的搜索看起来更像:

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

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

于 2011-04-08T16:25:02.063 回答