【问题标题】:Solrnet q parameter issue with compound query复合查询的 Solrnet q 参数问题
【发布时间】:2013-02-19 16:07:35
【问题描述】:

我们正在使用 Solrnet 根据用户可以选择的一组选项向 Solr 发出复合查询,例如短语,确切的短语。排除、接近等。我们正在根据使用 SolrQueryByField API 选择的选项创建单个查询,并使用 SolrMultipleCriteriaQuery 与 AND 运算符组合组合。但是当我们向 Solr 提交查询时,提交的 q 参数在所有术语中都添加了 + 号:

q=(ContentSearch:(roman)+AND+ContentSearch:("test+case")+AND+-ContentSearch:(wine)+AND+(ContentSearch:(A)+OR+ContentSearch:(B))+AND+ContentSearch:("catacombs+wine"~5)+AND+ContentSearch:([10+TO+20]))}

+AND+ 或 "test+case" 或 +AND+- 或 10+TO+20 弄乱了查询解析器。有没有人遇到过这个? solrnet向solr发送请求时,和url编码有关系吗?

【问题讨论】:

标签: solr solrnet


【解决方案1】:

如果您使用 SolrNet 0.4.0,您可以在 SolrQueryByField Quoted=false 上设置一个可选参数,这将停止 QueryByField 的默认行为以转义特殊字符。

【讨论】:

  • 我已经这样做了....但它仍然显示相同的行为。不知道为什么要在每个查询子句甚至查询词之间添加 +。
  • 啊,我明白了。我不确定为什么要在每个查询子句中添加 +。可能是 SolrNet 中内置的一些嵌入式特殊字符转义。
  • 基于 SolrNet Google Group 上的一个问题 - groups.google.com/forum/?fromgroups=#!searchin/solrnet/… 您可以考虑使用 edismax 并让 Solr 为您处理。
  • 正如 Mauricio Scheffer 提到的,“+”字符只是在您的 url 请求中编码的空格
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-07-27
  • 2012-08-03
  • 1970-01-01
相关资源
最近更新 更多