SOLR 分面搜索与 OR 运算符一样返回分面计数

标签 solr faceted-search facet

在设置问题之前,我将首先尝试通过在 SOLR 中使用分面搜索来解释我想要实现的目标。想象一下,我有一个狗的参数,它描述了狗适合什么,一只狗可以有多种选择。我们称之为“住房”。所以狗适合:

  • 室内
  • 户外
  • child
  • 老人
  • 守卫。

  • 所以基本上当我在这个参数上使用分面搜索时,我会得到这样的当前数据库的结果(网址查询 facet=true&facet.field=housing):

    室内 (74)、室外 (63)、 child (71)、老人 (65)、守卫 (31)。

    现在,当我检查室内参数(网址查询 fq=housing:1&facet=true&facet.field=housing)时,我得到如下结果:

    室内 (74)、室外 (53)、 child (60)、老人 (53)、守卫 (15)。

    它告诉我,如果检查下一个参数“户外”,则有 53 只狗在室内和室外。我想得到结果,它会告诉“如果我检查下一个选项,将有多少狗添加到结果中”。因为可以有只适合户外事件的狗。在检查第一个“室内”参数后,我想得到这样的结果:
    室内 (74)、室外 (83)、 child (78)、老人 (79)、守卫 (75)
    或以其他方式
    室内(+0)、室外(+9)、 child (+4)、老人(+5)、守卫(+1)

    在 SOLR 分面搜索中是否有这种可能?或者我使用了不正确的工具来实现这一目标。因为基本上当我检查“室内”和“室外”时,我从查询中得到了正确的结果计数(网址查询 fq=housing:(1 OR 2)&facet=true&facet.field=housing)。只是方面计数不是我所期望的。

    最佳答案

    我认为您需要使用 facet.query参数,这将允许您指定仅适用于分面结果而不适用于主查询的查询。

    This param allows you to specify an arbitrary query in the Lucene default syntax to generate a facet count. By default, faceting returns a count of the unique terms for a "field", while facet.query allows you to determine counts for arbitrary terms or expressions.



    在您的情况下,我相信您仍然会返回“字段”的唯一术语的方面计数,但应用了一些额外的过滤器。

    关于SOLR 分面搜索与 OR 运算符一样返回分面计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16604953/

    相关文章:

    Solr 集合与核心

    solr - 在 SOLR 中,空白给出了不同的结果

    java - 使用 Lucene 4.3 进行分面搜索

    solr - 使用 API 更改 SolrCloud 中的默认查询字段

    Solr:查询日期字段和当前日期的运行时分面计算

    java - Solr 。多面搜索理解

    r - 将ggplot中 strip 标签的位置从顶部更改为底部?

    r - 如何控制显示哪些 facet_wrap 标签

    r - 一起使用facet_wrap和geom_tile时,改变填充比例

    java - Lucene/Solr 聚合