【问题标题】:Open Search Server v1.4 select query special charactersOpen Search Server v1.4 选择查询特殊字符
【发布时间】:2014-10-27 10:04:04
【问题描述】:

我们使用的是 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:无法解析 'content:(冰箱温度图表(5) OR content:("冰箱 温度图表 (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

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

【问题讨论】:

    标签: search-engine opensearch


    【解决方案1】:

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

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

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

    问候,

    亚历山大

    【讨论】:

      【解决方案2】:

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

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

      Lucene 支持转义查询中的特殊字符 句法。当前列表特殊字符为

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

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

      \(1\+1\)\:2

      【讨论】:

        猜你喜欢
        • 2018-04-18
        • 1970-01-01
        • 2019-07-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-05-30
        • 2014-01-27
        相关资源
        最近更新 更多