3

websolr 正在回归

 RSolr::Error::Http - 400 Bad Request
Error: <html><head><title>Apache Tomcat/6.0.28 - Error report</title><style><!--H1 {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;font-size:22px;} H2 {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;font-size:16px;} H3 {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;font-size:14px;} BODY {font-family:Tahoma,Arial,sans-serif;color:black;background-color:white;} B {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;} P {font-family:Tahoma,Arial,sans-serif;background:white;color:black;font-size:12px;}A {color : black;}A.name {color : black;}HR {color : #525D76;}--></style> </head><body><h1>HTTP Status 400 - org.apache.lucene.queryParser.ParseException: Cannot parse '----': Encountered &quot; &quot;-&quot; &quot;- &quot;&quot; at line 1, column 1.
Was expecting one of:
   &quot;(&quot; ...
   &quot;*&quot; ...
   <QUOTED> ...
   <TERM> ...
   <PREFIXTERM> ...
   <WILDTERM> ...
   &quot;[&quot; ...
   &quot;{&quot; ...
   <NUMBER> ...

何时尝试搜索“-”字符。

其他特殊字符可以正常工作,例如“:”等我尝试使用 CGI.escape 但它没有对这些字符进行转义。

4

2 回答 2

2

正如克里斯正确指出的那样,您需要转义反斜杠。

根据您使用的查询解析器,有些特殊字符是有意义的。在撰写本文时,Lucene(以及 Solr)查询解析器为这些字符分配了特殊含义:

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

您应该参考文档以了解Lucene 查询解析器语法的全部含义。默认的 Solr 查询解析器提供了 Lucene 查询解析器语法的超集,如SolrQueryParser wiki 页面所述。

如果您不想担心转义,DisMax 查询解析器旨在接受与用户可能在搜索框中键入的内容更接近的输入。我最近没有针对它测试各种特殊功能,但通常它在接受的输入中可能更优雅。

于 2012-04-26T17:32:59.230 回答
2

你试过用反斜杠转义它吗?

通常,当您索引文档时,标记器会自行删除破折号,因此您可能只想删除破折号,除非您的意思是它是一个否定查询。

完整的 Solr 查询语法在这里: http ://wiki.apache.org/solr/SolrQuerySyntax

于 2012-04-03T06:48:48.160 回答