在solr中使用或在facet查询中

时间:2014-04-07 10:57:04

标签: solr solr4 facets

我有问题。我在solr中有3个过滤器。让我们称它们为过滤器A,B和C.我的要求是我希望过滤器A是强制性的,B和C是可选的。如果我写和'&'在过滤器之间,所有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

使用或'或'在它们之间制作过滤器' A'非强制性的。

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

我应该如何处理这种情况

2 个答案:

答案 0 :(得分:2)

如果我正确理解您的问题,您需要确定您的文档与过滤器A匹配并匹配过滤器B或C.

如果是这种情况,您可以使用以下过滤查询

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

确保你的AND和OR大写。

答案 1 :(得分:0)

如果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_value *因为我不是100%确定