在设置问题之前,我将首先尝试通过在 SOLR 中使用分面搜索来解释我想要实现的目标。想象一下,我有一个狗的参数,它描述了狗适合什么,一只狗可以有多种选择。我们称之为“住房”。所以狗适合:
所以基本上当我在这个参数上使用分面搜索时,我会得到这样的当前数据库的结果(url查询
facet=true&facet.field=housing
):室内 (74)、室外 (63)、 child (71)、老人 (65)、守卫 (31)。
现在,当我检查室内参数(url 查询
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 分面搜索中是否有这种可能?或者我使用了不正确的工具来实现这一目标。因为基本上当我检查“indoors”和“outdoors”时,我从查询(url查询
fq=housing:(1 OR 2)&facet=true&facet.field=housing
)中得到了正确的结果计数。只是方面计数不是我所期望的。 最佳答案
我认为您需要使用 facet.query 参数,它允许您指定一个仅适用于分面结果而不适用于主查询的查询。
在您的情况下,我相信您仍然会返回“字段”的唯一术语的方面计数,但应用了一些额外的过滤器。
关于SOLR 分面搜索与 OR 运算符一样返回分面计数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16604953/