2015-04-02 64 views
2

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

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

现在我使用这个代码在Solrj

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

我知道,我可以使用或在这里,但需要知道在Solr的。 OR的表现。

回答

3

正如你可以在Solr的wiki中阅读约its' query syntax,Solr默认使用Lucene's Query parser的超集。正如您在阅读这两个文档时可以看到的那样,像IN这样的东西不存在。但是,您可以比您提供的示例查询短。

如果您的默认操作符是OR,您可以将它从查询中排除。另外你可以使用Field Grouping

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

在案件或不是默认的运营商或你不知道这一点,你可以使用本地参数过滤查询,以便或者强制执行。之后,您可以再次使用字段分组。

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

请记住,你需要围绕一个短语与"保持词放在一起

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