更确切地说,我将以实例为例......
干净查询是:(类型: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(反斜杠)添加到查询字符串,我采取了什么措施?
提前致谢
SolrQueryByField生成引用/转义值.如果你有一些特殊情况,这是不可取的(例如这种情况)你可以使用SolrQuery,例如:
Query.Field("type").Is(77) && (Query.Field("zipCode").Is("12345") || Query.Simple("name:\"OR\""))
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1991 次 |
| 最近记录: |