2015-04-02 74 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\")");