Solr:引用和转义的奇怪行为

时间:2015-04-10 10:00:15

标签: solr lucene spring-data-solr

我正在使用Solr 4.10.0 / Lucene 4.10.0进行过滤查询,并且遇到奇怪的情况,而

  • fq=areas:Finanz- & Rechnungswesen
  • fq=areas:"Finanz- & Rechnungswesen"

产生同一组文件,

  • fq=areas:E-Commerce & Neue Medien
  • fq=areas:"E-Commerce & Neue Medien"

不要 - 在后一种情况下,结果集是空的。

我在Solr管理界面中执行了查询,并在Solr日志中检查过滤器是否正确转换为查询参数

  • fq=areas:Finanz-+%26+Rechnungswesen
  • fq=areas:"Finanz-+%26+Rechnungswesen"
  • fq=areas:E-Commerce+%26+Neue+Medien
  • fq=areas:"E-Commerce+%26+Neue+Medien"

分别。仅在最后一种情况下,结果集为空。任何人都可以解释为什么会这样吗?不幸的是,Spring Data Solr引用了多字过滤器,因此在这种情况下会产生错误的结果。

1 个答案:

答案 0 :(得分:0)

如果没有查看索引中的数据,很难准确诊断为什么会有不同数量的结果,但是由于字段语法的原因,您的查询可能无法按预期运行。

过滤器查询areas:Finanz- & Rechnungswesen将被解析为: areas:Finanz- {default_field}:rechnungswesen其中 {default_field} 是在未提供默认字段时已配置为默认字段的任何内容。

为了更轻松地调试这些查询,请查看debugQuery=true的结果,这也可以在 Solr Admin UI's query interface

要确保所有字词仅限于区域字段,请使用括号,例如:

areas:(Finanz- & Rechnungswesen)

有关更多详细信息,请查看Solr查询解析器语法:https://wiki.apache.org/solr/SolrQuerySyntax#Default_QParserPlugin:_LuceneQParserPlugin