IN Solr 和 Solrj 中的等效查询

IN Equivalent Query In Solr and Solrj

我正在使用 solr5.0.0。我想知道等效的查询 IN 在 solr 或 solrj 中。

如果我需要查询不同品牌的产品,可以使用IN子句。如果我有戴尔、索尼、三星等品牌。我需要使用 Solr 和 Java Solrj.

找到这些品牌的产品

现在我在 Solrj 中使用这段代码

qry.addFilterQuery("brand:dell OR brand:sony OR brand:samsung");

我知道我可以在这里使用 OR,但需要了解 Solr 中的 IN。以及OR的表现。

您可以在 Solr 的 wiki 中阅读有关 its' query syntax, Solr uses per default a superset of Lucene's Query parser 的内容。正如您在阅读这两个文档时所看到的,不存在类似 IN 的内容。但是您可以比您提供的示例查询更短。

如果您的默认运算符是 OR,您可以将其从查询中删除。此外,您还可以使用 Field Grouping.

qry.addFilterQuery("brand:(dell sony samsung)");

如果 OR 不是您的默认运算符或您不确定这一点,您可以为过滤器查询使用本地参数,以便强制执行 OR。之后您可以再次使用字段分组。

qry.addFilterQuery("{!q.op=OR}brand:(dell sony samsung)");

请记住,您需要用 " 将词组括起来,以便将单词放在一起

qry.addFilterQuery("{!q.op=OR}brand:(dell sony samsung \"packard bell\")");