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

def*_*754 4 solr facet faceted-search

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

  1. 在室内
  2. 在户外
  3. 孩子
  4. 老人
  5. 守着.

所以基本上当我在这个参数上使用分面搜索时,我得到了当前数据库的结果(url query facet=true&facet.field=housing):

室内(74),室外(63),儿童(71),老人(65),守卫(31).

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

室内(74),户外(53),儿童(60),老人(53),守卫(15).

它告诉我,如果检查下一个参数"户外",有53只狗在室内和室外.我想得到结果,这将告诉"如果我检查下一个选项,将在结果中添加多少只狗".因为可以有适合户外的狗.在首先检查"室内"参数后,我想得到这样的结果:
室内(74),户外(83),儿童(78),老人(79),守卫(75)

室内其他方式(+0) ,户外(+9),儿童(+4),老人(+5),看守(+ 1)

在SOLR分面搜索中它是否可能是这样的?或者我使用不正确的工具来实现这一目标.因为基本上当我检查"室内"和"户外"时,我从查询中获得了正确的结果计数(url查询fq=housing:(1 OR 2)&facet=true&facet.field=housing).方面的重要性不是我预期的.

Pai*_*ook 6

我认为你需要使用facet.query参数,它允许你指定一个只适用于分面结果而不是主查询的查询.

此参数允许您在Lucene默认语法中指定任意查询以生成构面计数.默认情况下,faceting返回"field"的唯一术语计数,而facet.query允许您确定任意术语或表达式的计数.

在您的情况下,我相信您仍会返回"字段"的唯一字词的构面计数,但应用了一些额外的过滤器.