Solrnet:搜索字段值是查询运算符时的问题(eq.或,和)

Zla*_*itz 3 c# solrnet

更确切地说,我将以实例为例......

干净查询是:(类型:77 AND(zipCode:12345或名称:OR))

在Solr Admin页面上查询时,抛出异常:

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

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

(类型:"77"AND(zipCode:"12345"或OR名称:"OR"))

这充当了魅力

现在我有一个问题,用solrnet做同样的事情.我正在使用SolrQueryByField类进行查询.我在工作的时候

新的SolrQueryByField("名称","或")

我得到了Solrnet.Exceptions.InvalidFieldException,这与Solr Admin页面一致,但是当我正在使用时

新的SolrQueryByField("name","\"OR \"")

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

来自Solr Admin页面的名称%3A%22OR%22 =>

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

我的问题是:为防止solrnet将%5C(反斜杠)添加到查询字符串,我采取了什么措施?

提前致谢

Mau*_*fer 8

SolrQueryByField生成引用/转义值.如果你有一些特殊情况,这是不可取的(例如这种情况)你可以使用SolrQuery,例如:

Query.Field("type").Is(77) && (Query.Field("zipCode").Is("12345") || Query.Simple("name:\"OR\""))
Run Code Online (Sandbox Code Playgroud)