3

如何在 Solr 中搜索特定标点符号,例如:)?我已尝试对文本进行 URL 编码,但仍然收到此消息:

org.apache.solr.search.SyntaxError: Cannot parse ':': Encountered " ":" ": "" at line 1, column 0.
Was expecting one of:
<NOT> ...
"+" ...
"-" ...
<BAREOPER> ...
"(" ...
"*" ...
<QUOTED> ...
<TERM> ...
<PREFIXTERM> ...
<WILDTERM> ...
<REGEXPTERM> ...
"[" ...
"{" ...
<LPARAMS> ...
<NUMBER> ...
<TERM> ...
"*" ...

此外,我需要在文本字段上执行此搜索,而不是在字符串字段上。我应该如何配置分析器以保存标点符号?

请注意,由于有两个名为“Smiley”的多产 Solr 贡献者,因此无法在 Google 上搜索该主题!

4

2 回答 2

3

您对文本字段有哪些配置?
您应该注意拆分不会发生在标点上,例如,如果使用 StandardTokenizerFactory 或单词分隔符过滤器。
您可以使用 WhitespaceTokenizerFactory 或 KeywordTokenizerFactory 定义自定义字段,并在其上添加更多过滤器,例如小写。

此外,还有一些 Solr/Lucene 用于某些操作的字符,例如 + - !( ) { } [ ] ^ " ~ * ? :
您需要使用反斜杠转义特殊字符。检查Escape Special Characters

于 2013-05-23T10:59:03.983 回答
1

而不是 :) 搜索 "\:\ )" ,两个字符 :,) 在 SOLR 中具有特殊含义。对于所有特殊操作员,您需要通过前缀 '\' char 来转义。

于 2013-05-23T12:52:14.270 回答