【问题标题】:Escape Special Character In Solr在 Solr 中转义特殊字符
【发布时间】:2021-11-03 13:04:47
【问题描述】:

在运行http://localhost:8983/solr/amazon_products/select?q=*:*&fq=Category:"Toys \& Games " 后转义特殊字符“&”时出现以下错误 Solr 中的这个查询

{
"responseHeader": {
    "zkConnected": true,
    "status": 400,
    "QTime": 0,
    "params": {
        "q": "*:*",
        "Games \"": "",
        "fq": "Category:\"Toys \\",
        "rows": "70"
    }
},
"error": {
    "metadata": [
        "error-class", "org.apache.solr.common.SolrException",
        "root-error-class", "org.apache.solr.parser.TokenMgrError"
    ],
    "msg": "org.apache.solr.search.SyntaxError: Cannot parse 'Category:\"Toys \\': Lexical error at line 1, column 17.  Encountered: <EOF> after : \"\\\"Toys \\\\\"",
    "code": 400
}}

类别字段包含如下值

"Category":["Toys & Games "," Learning & Education "," Science Kits & Toys"]
"Category":["Home & Kitchen "," Home Décor "," Window Treatments "," Window Stickers & Films ", " Window Films"],

类别字段是 string 类型,multivalued=true

      {
    "name":"Category",
    "type":"string",
    "multiValued":true,
    "stored":true},

如何正确搜索类别:“玩具和游戏”

注意:我试过http://localhost:8983/solr/amazon_products/select?q=*:*&amp;fq=Category:Toys* AND *"Games "&amp;rows=70 这个查询,它工作得很好,但是如果我非常想搜索字符串'Toys & Games',如何通过正确转义特殊字符'&'来做到这一点

【问题讨论】:

  • 包含双引号的查询,使用三斜杠 \\\:查询语法:一个斜杠 \ 转义 " 对于 JSON 字符串语法:两个斜杠 \\ 转义 \ 三斜杠 \ \\ 转义 \" 中的两个字符以生成 \\(转义转义)和 \"(转义双引号)。
  • 由于特殊字符 '&' 出现错误。双引号不会造成任何问题。
  • 你不需要转义&amp;。 solr.apache.org/guide/8_10/…

标签: solr lucene solrcloud faceted-search solr-query-syntax


【解决方案1】:

您需要对一些字符进行编码。例如以下命令:

$ curl 'http://localhost:8983/solr/puldata/select?fq=title_t%3A%22Woody%20Herman%20%26%20His%20Orchestra%22&q=*&start=0'

将查询fq=title_t:"Woody Herman &amp; His Orchestra"。请注意:、"、空格和&amp; 字符的编码方式。

【讨论】:

  • 正如@EricLavault 所建议的,不需要转义'&','&&' 需要转义。因此,考虑到@Hector Correa 的回答,通过使用 '%26' 编码 '&' 解决了错误。而不是 http://localhost:8983/solr/amazon_products/select?q=*:*&amp;fq=Category:"Toys &amp; Games " 使用这个 http://localhost:8983/solr/amazon_products/select?q=*:*&amp;fq=Category:"Toys %26 Games " 为我工作
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-07-02
  • 2017-03-06
  • 2012-12-15
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多