【发布时间】: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=*:*&fq=Category:Toys* AND *"Games "&rows=70 这个查询,它工作得很好,但是如果我非常想搜索字符串'Toys & Games',如何通过正确转义特殊字符'&'来做到这一点
【问题讨论】:
-
包含双引号的查询,使用三斜杠 \\\:查询语法:一个斜杠 \ 转义 " 对于 JSON 字符串语法:两个斜杠 \\ 转义 \ 三斜杠 \ \\ 转义 \" 中的两个字符以生成 \\(转义转义)和 \"(转义双引号)。
-
由于特殊字符 '&' 出现错误。双引号不会造成任何问题。
-
你不需要转义
&。 solr.apache.org/guide/8_10/…
标签: solr lucene solrcloud faceted-search solr-query-syntax