我不确定这是否可行,但我希望能够更加精确地控制返回的方面数,而不仅仅是包含和排除。

具体来说,我有一个界面,允许用户按“facetA”和“facetB”进行过滤。看起来有点像这样

过滤
-facetA:文章(20),图片(6),事件(14)
-faceB:猫(23),狗(12),刺猬(5)

该接口(interface)清楚地表明,facetA在层次结构中比facetB高。
我希望facetA可以完全持久化,而facetB也可以持久化,但要取决于facetA的选择。

因此,接口(interface)可能会对facetB的更改做出以下 react :

过滤
-facetA:文章(20),图片(6),事件(14)
-faceB:猫(23),狗(12),刺猬(5)

也就是说,任何一项都不会改变。

但是它将对facetA更改做出如下 react :

过滤
-facetA:文章(20),图片(6),事件(14)
-facetB:猫(15),狗(4),刺猬(1)

也就是说,facetB计数发生变化以反射(reflect)应用了facetA过滤器后可用的内容。

只是在做

&facet.field = {!ex = dt} fieldA&facet.field = {!ex = dt} fieldB

达不到我想要的效果,但是很接近。我发现Solr Wiki中对此的说明非常含糊-就像我什至都不知道'dt'代表什么。谁能详细说明?我可以更好地控制如何排除计数吗?

最佳答案

好的,我知道了。 'dt'是用户指定的标记,使用{!tag = *}语句设置,并使用{!ex =}语句引用。

因此,如果将以下内容添加到查询中,则上面的示例是固定的:

&fq={!tag=tagA}fieldA:facetASelection
&fq={!tag=tagB}fieldB:facetBSelection
&facet=true
&facet.field={!ex=tagA}fieldA
&facet.field={!ex=tagB}fieldB

这意味着facetA的选择(fq)不会影响facetA的计数,而facetB的选择(fq)不会影响facetB的计数。

甜的!我几乎辞职了,发送了多个查询来获取所需的信息。

关于选择性排除的Solr构面计数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6907341/

10-10 03:09