打开Search Server v1.4选择查询特殊字符

时间:2014-09-03 02:23:03

标签: search-engine opensearch

我们正在使用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选择查询中可以使用的所有特殊字符吗?

2 个答案:

答案 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