我们正在使用Open Search Server v1.4。当用户输入搜索文本"冰箱温度图表时(5"我们创建一个类似
的URL)http://10.192.16.160:8080/services/rest/select/search/<indexname/json?login=<login>&key=<apikey>template=search&query=Refrigerator%20temperature%20chart%20%285&start=0&rows=1000&filter=fileType%3afile&lang=ENGLISH
这失败了......
HTTP状态500 - org.apache.cxf.interceptor.Fault: com.jaeksoft.searchlib.SearchLibException: com.jaeksoft.searchlib.query.ParseException: org.apache.lucene.queryParser.ParseException:无法解析 &#39;内容:(冰箱温度图表(5)或内容:(&#34;冰箱 温度图表(5&#34;)OR
因此,在开放式括号之前添加转义字符%5C会修复此查询,如此...
http://10.192.16.160:8080/services/rest/select/search/<indexname/json?login=<login>&key=<apikey>template=search&query=Refrigerator%20temperature%20chart%20%5C%285&start=0&rows=1000&filter=fileType%3afile&lang=ENGLISH
有人能指出一些文档,其中列出了在搜索字符串中输入时需要转义的Open Search选择查询中可以使用的所有特殊字符吗?
答案 0 :(得分:1)
是的,您是对的,您链接的页面中“转义特殊字符”部分中列出的字符也需要在OpenSearchServer中进行转义。
我们最近发布了一个修补程序,允许在配置了Search (field)
模式的Searched fields
pattern
类型的查询中转义这些字符。
以前转义字符仅适用于Search (pattern)
类型的查询。
(这里有两种查询的更多信息:http://www.opensearchserver.com/documentation/tutorials/functionalities.html#two-kinds-of-queries)
此致
亚历山大
答案 1 :(得分:0)
我相信Open Search Server基于Lucene。这里描述了Lucene引擎的查询语法......
http://lucene.apache.org/core/2_9_4/queryparsersyntax.html
Lucene支持转义属于查询的特殊字符 句法。当前列表的特殊字符是
+ - &amp;&amp; || ! (){} [] ^“〜*?:\
要逃避这些角色,请在角色前使用\。例如 搜索(1 + 1):2使用查询:
\(1 \ 1 \)\:2