Solr 如何对方面计数使用不同的查询

Solr 如何对方面计数使用不同的查询,solr,solrj,Solr,Solrj,如果搜索q=*:*&facet=true&facet.field=categorysolr将返回如下结果: jackets (10) shirts (5) 如果我将查询更改为q=name:shirt&facet=true&facet.field=category,则得到 jackets (0) shirts (5) 我想使用一个不同的查询来生成facet,这样它将计算所有facet,而不仅仅是那些与查询匹配的facet,即搜索“q=name:shirt”,它应该返回 jackets (10)

如果搜索
q=*:*&facet=true&facet.field=category
solr将返回如下结果:

jackets (10)
shirts (5)
如果我将查询更改为
q=name:shirt&facet=true&facet.field=category
,则得到

jackets (0)
shirts (5)
我想使用一个不同的查询来生成facet,这样它将计算所有facet,而不仅仅是那些与查询匹配的facet,即搜索
“q=name:shirt”
,它应该返回

jackets (10)
shirts (5)
我尝试添加facet.query参数,但似乎没有效果
facet.query=*:*
仍然返回

jackets (0)
shirts (5)
如果我使用查询
q=name:shirt


如何使用不同的查询来生成facet?我使用的是solr 5.5.0,因此似乎facet.query是查询搜索结果中的facet查询。解决方案是使用标记和排除,例如

q={!tag=name}name&facet=true&facet.field={!ex=name}category
因此,对于我要排除的每个查询,我都会标记它,然后在facet.field的ex部分中引用它


虽然我开始认为最好使用两个查询,并简单地将facet结果缓存在应用服务器上…

因此facet.query似乎是查询搜索结果中的facet查询。解决方案是使用标记和排除,例如

q={!tag=name}name&facet=true&facet.field={!ex=name}category
因此,对于我要排除的每个查询,我都会标记它,然后在facet.field的ex部分中引用它


虽然我开始认为最好使用两个查询并在应用服务器上缓存facet结果…

您可能希望在有人单击facet后使用fq-s限制结果集-它们不会影响分数,可以单独缓存(并且在不更改用户实际查询的情况下提供)。使用标记是满足您要求的正确方法。您可能希望使用fq-s来限制某人单击某个方面后的结果集-它们不会影响分数,并且可以单独缓存(并且在不更改用户实际查询的情况下提供)。使用标签是做你要求的事情的正确方式。