首页 文章

Solr的每个场的多个面

提问于
浏览
4

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

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

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

在Solr中有没有内置的方法可以做到这一点?如果没有,我将如何滚动自己 . 显然我需要缓存为该字段返回的原始方面 . 但是,一旦我已经为该领域选择了一个(或多个)方面,那么计算其他方面区域的计数的最有效方法是什么 . 显然,当选择其他构面时,您在这些值之间进行“OR”查询,因为您尝试使用这两个值中的任何一个来显示事物 .

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

Example Amazon faceting

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

对于未来版本的Solr,是否有任何功能可以提供开箱即用的功能(假设它不在盒子中)?

2 回答

  • 7

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

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

    自从Solr 1.4以来我就会出现这个功能 .

  • 3

    使用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} }
    }
    

    注意选择蓝色或黑色项目的过滤器上的tag = COLOR . 当我们面对颜色时,我们想要忽略(或排除)带有该标签的过滤器,这样我们仍然可以获得其他颜色计数 . 这就是域名:{excludeTags:COLOR} .

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

相关问题