【问题标题】:Multiple facets per field with SolrSolr 每个字段的多个方面
【发布时间】:2012-10-06 23:15:58
【问题描述】:

默认情况下,Solr 返回一个字段的构面,然后如果您为该字段选择一个构面值,则所有其他先前的选择都不再作为该字段的构面的一部分返回。

我正在尝试开发一个更像亚马逊搜索引擎的搜索引擎(它基于他们自己的 A9 搜索引擎,因此可能类似于 Amazon CloudSearch)。

当您在亚马逊搜索中缩小到某些“方面”时,它们会继续显示其他选项,以及如果您将该区域添加到搜索中的计数。

Solr 中是否有内置方法可以做到这一点?如果没有,我将如何自己滚动。显然,我需要缓存为该字段返回的原始方面。但是,一旦我已经为该字段选择了一个(或多个)刻面,那么计算其他刻面区域的计数的最有效方法是什么。 Obviously when additional facets are selected, you're doing an "OR" query between those values, as you're trying to show things with either of the two values.

例如,我在亚马逊的珠宝部门搜索了钻石戒指,然后缩小到黄金作为金属类型。然后我可以选择多个克拉刻面:

有人可以举例说明我如何(有效地)使用 Solr 做到这一点吗?

在未来版本的 Solr 中是否有任何功能可以提供开箱即用的功能(假设它还没有开箱即用)?

【问题讨论】:

  • This answer 可以帮助人们根据标题找到这个问题。

标签: search solr faceted-search


【解决方案1】:

使用 Solr 的新 JSON Facet API 进行多选分面的工作方式略有不同。 您仍然以相同的方式标记过滤器,但排除语法有所不同。

&q="running shorts"
&fq={!tag=COLOR}color:(Blue Black)
&json.facet={
      sizes:{type:terms, field:size},
      colors:{type:terms, field:color, domain:{excludeTags:COLOR} },
      brands:{type:terms, field:brand, domain:{excludeTags:BRAND} }
}

注意标签=COLOR 在选择蓝色或黑色项目的过滤器上。 当我们考虑颜色时,我们希望忽略(或排除)带有该标签的过滤器,因此我们仍然可以恢复其他颜色计数。这就是 domain:{excludeTags:COLOR} 所做的。

这个例子取自http://yonik.com/multi-select-faceting/

【讨论】:

    【解决方案2】:

    Tagging and excluding Filters Solr 中的功能可能是您正在寻找的功能,这里是解释 Multi Select Faceting 的 Wiki 链接。

    例如::../solr/select/?q=*&rows=0&facet=on&fq={!tag=krt}KARAT:10k_Gold&facet.field={!ex=krt}KARAT

    我猜这个功能从 Solr 1.4 开始就存在了。

    【讨论】:

    • +1 这对我很有帮助。你能分享一下我如何在 1.4 中对 SolrQuery 做同样的事情吗?类似 setFacetField() 的东西?
    • 如何在字段和术语查询的多个值用于过滤器查询的情况下标记字段。我的过滤查询是fq={!terms=country_facet}uk,germany
    猜你喜欢
    • 1970-01-01
    • 2016-03-10
    • 2012-10-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多