0

我们使用的是 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:无法解析'内容:(冰箱温度图表(5)或内容:(“冰箱温度图表(5”)或

因此,在左括号之前添加一个转义字符 %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

有人可以向我指出一些文档,其中列出了可以在打开搜索选择查询中使用的所有特殊字符,这些特殊字符在作为搜索字符串的一部分输入时需要转义?

4

2 回答 2

1

是的,您是对的,您链接的页面中“转义特殊字符”部分中列出的字符也需要在 OpenSearchServer 中转义。

我们最近发布了一个修复程序,允许在配置模式的类型Search (field)查询中转义这些字符。Searched fieldspattern

以前的字符转义仅在 type 的查询中可用Search (pattern)。(这两种查询的更多信息:http ://www.opensearchserver.com/documentation/tutorials/functionalities.html#two-kinds-of-queries )

问候,

亚历山大

于 2014-09-05T09:15:46.180 回答
0

我相信 Open Search Server 是基于 Lucene 的。Lucene 引擎的查询语法在此处描述...

http://lucene.apache.org/core/2_9_4/queryparsersyntax.html

Lucene 支持对属于查询语法一部分的特殊字符进行转义。当前列表特殊字符是

+ - && || !( ) { } [ ] ^ " ~ * ? : \

要转义这些字符,请在字符前使用 \。例如,要搜索 (1+1):2,请使用以下查询:

\(1\+1\)\:2

于 2014-09-03T08:08:40.267 回答