如何在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> ...
"*" ...
此外,我需要在文本字段上执行此搜索,而不是在字符串字段上执行此搜索。如何配置分析仪以节省标点符号?
请注意,由于两名多产的Solr贡献者名为“Smiley”,因此searching google无法获得该主题!
答案 0 :(得分:3)
您对文本字段有哪些配置?
你应该注意分裂没有发生在例如puntuations上如果使用StandardTokenizerFactory或word分隔符过滤器
您可以使用WhitespaceTokenizerFactory或KeywordTokenizerFactory定义自定义字段,并在其上设置更小的过滤器。
此外,Solr / Lucene使用某些字符进行某些操作,例如: + - ! (){} [] ^“〜*?:
您需要使用反斜杠转义特殊字符。查看Escape Special Characters
答案 1 :(得分:1)
而不是:)搜索“\:\)”,两个字符:,)在SOLR中具有特殊含义。 对于你需要通过前缀'\'char。
来逃脱的所有特殊操作