我使用的是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 默认使用 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\")");
关于java - Solr 和 Solrj 中的 IN 等效查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29410240/