我在使用SOLR查询获得正确的结果时遇到问题。基本上,假设我希望所有英文文档包含字符串“toto”。
http://127.0.0.1:8080/solr-webservice/query/?q=iso_lang_cd:en&ctnt_val:*toto*
问题是此查询向我发送了所有英文文档以及所有包含toto的文档。

我需要获取所有英文文件并包含TOTO的文件。我怎样才能做到这一点?我认为这是AND运算子的标准用法...

最佳答案

实际上,OR是Solr的默认查询运算符,并且您的查询的格式设置并不足以强制执行A​​ND操作。为了实现AND行为,您可以采用以下格式之一指定查询:

 +iso_lang_cd:en +ctnt_val:*toto*

 iso_lang_cd:en && ctnt_val:*toto*

或者,您可以选择传递q.op=AND强制执行A​​ND操作。另外,您可能要考虑使用Filter Queries,在这里可以对语言进行过滤。使用过滤器查询可以提高性能,但是请参考文档以获取更多详细信息。
 q=ctnt_val:*toto*&qf=iso_lang_cd:en

请参阅Standard Query Parser以获得更多详细信息和良好的查询概述。

10-01 15:38