2013-04-26 47 views
2

我有一个问题,通过我的SOLR查询获得正确的结果。基本上,我们假设我希望所有包含字符串“toto”的英文文档。Solr AND运算符

http://127.0.0.1:8080/solr-webservice/query/?q=iso_lang_cd:en&ctnt_val:*toto*

的问题是,这个查询发送我的英语和所有文件包含TOTO的所有文件。

我需要的是获取所有英文文档并包含toto。我怎么能做到这一点?我认为这是AND运算符的标准用法...

回答

5

其实OR是Solr的默认查询运算符,并且您的查询没有被格式化为强制执行A​​ND操作。为了实现和行为,你可以在下列格式之一指定查询:

+iso_lang_cd:en +ctnt_val:*toto* 

iso_lang_cd:en && ctnt_val:*toto* 

或者你可以选择通过q.op=AND强制与运算。此外,您可能需要考虑使用Filter Queries,您可以在其中筛选语言。使用过滤器查询有一些性能改进,但请参阅文档以获取更多详细信息。

q=ctnt_val:*toto*&qf=iso_lang_cd:en 

请参阅Standard Query Parser了解更多详情和查询的好概述。

+0

Filter Query完成了这项工作,谢谢! – Lupuss 2013-04-29 07:31:14

+1

&qf = iso_lang_cd:en其实应该是&fq = iso_lang_cd:en – user2602152 2014-09-19 11:58:31