更准确地说,我将使用示例...

干净的查询是: (type:77 AND (zipCode:12345 OR name:OR))

在 Solr 管理页面上查询时,这会引发异常:

org.apache.lucene.queryParser.ParseException:无法解析...

所以在 Solr Admin 页面上,我将查询更改为:

(类型:“77” AND(邮政编码:“12345”或名称:“OR”))

这是一种魅力

现在我在用 solrnet 做同样的事情时遇到了问题。我正在使用 SolrQueryByField 类进行查询。当我与

new SolrQueryByField("name", "OR")

我得到 Solrnet.Exceptions.InvalidFieldException 这符合 Solr Admin 页面,但是当我使用

new SolrQueryByField("name", "\"OR\"")

我得到错误的结果。通过检查网络流量,我发现 http get 请求是不同的(为简洁起见,仅给出了名称字段名称和值):

name%3A%22OR%22 => 来自 Solr 管理页面

名称%3a%5c%22OR%5c%22 => 来自 solrnet

我的问题是:我应该怎么做才能防止 solrnet 将 %5C(反斜杠)添加到查询字符串中?

提前致谢

最佳答案

SolrQueryByField 产生引用/转义值。如果您有一些不需要的特殊情况(例如这种情况),您可以使用 SolrQuery ,例如:

Query.Field("type").Is(77) && (Query.Field("zipCode").Is("12345") || Query.Simple("name:\"OR\""))

关于c# - Solrnet:搜索字段值为查询运算符(eq. or, and)时的问题,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6042259/

10-09 17:03