在solr中使用或在方面查询

在solr中使用或在方面查询,solr,solr4,facets,Solr,Solr4,Facets,我有个问题。我在solr中有3个过滤器。我们把它们称为过滤器A、B和C。我的要求是过滤器A是强制性的,B和C是可选的。如果我在过滤器之间写入and“&”,那么所有3个都将成为必填项 http://127.0.0.1:8983/solr/core1/select?q=*:*&fq=A:a_value&fq=B:b_value&fq=C:c_value&wt=xml&indent=true 它们之间的使用或“或”将使过滤器成为非强制性的 http://127

我有个问题。我在solr中有3个过滤器。我们把它们称为过滤器A、B和C。我的要求是过滤器A是强制性的,B和C是可选的。如果我在过滤器之间写入and“&”,那么所有3个都将成为必填项

http://127.0.0.1:8983/solr/core1/select?q=*:*&fq=A:a_value&fq=B:b_value&fq=C:c_value&wt=xml&indent=true
它们之间的使用或“或”将使过滤器成为非强制性的

http://127.0.0.1:8983/solr/core1/select?q=*:*&fq=A:a_value or B:b_value or C:c_value&wt=xml&indent=true

我该如何处理这种情况

如果我正确理解了您的问题,您需要确保您的文档符合筛选器A和筛选器B或C

如果是这种情况,您可以使用以下筛选器查询

fq=(A:a_value AND (B:b_value OR C:c_value))

确保您的AND和OR大写。

如果B和C是可选的,为什么要使用FQ

FQ(筛选器查询)在实际筛选时非常有用,您需要记住它不会计入分数

所以1。实际上,您希望在Q中使用它(这样,当文档与B/C匹配时,它将反映在分数中) 或2。如果B/C不应该影响分数,为什么你要把它放进去

在案例1中,查询可能如下所示:

(A:a_value AND ((B:b_value OR -B:b_value) OR (C:c_value OR -C:c_value)))
您可能需要调整*-B:B_值*,因为我不是100%确定