0

我有个问题。我在 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

我该如何处理这种情况

4

2 回答 2

2

如果我正确理解您的问题,您希望确定您的文档匹配过滤器 A 并匹配过滤器 B 或 C。

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

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

确保您的 AND 和 OR 大写。

于 2014-04-07T12:07:40.797 回答
0

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

FQ(过滤查询)在您实际过滤时很有用,您需要记住它不会计入分数。

所以 1. 你实际上想在 Q 中使用它(这样当 doc 匹配 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% 确定

于 2014-04-07T12:11:12.963 回答