【发布时间】:2013-12-22 20:15:02
【问题描述】:
我有一个具有以下定义的文本字段:
<fieldType name="myTextField" class="solr.TextField" positionIncrementGap="100">
<analyzer type="index">
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.NGramFilterFactory" minGramSize="1"
maxGramSize="40"/>
</analyzer>
<analyzer type="query">
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>
<filter class="solr.LowerCaseFilterFactory"/>
</analyzer>
</fieldType>
现在,我有一个包含此文本的字段: "嗨,这是一个关于 solr 的问题"
还有另一个包含此文本的字段: "aaa solr bbb"
当我的查询字符串是“关于 solr”时,我得到了两个字段作为结果,尽管我只想要第一个字段,因为它是唯一一个包含所有字符(包括空格)的字段。 这不仅发生在空格上,还发生在其他特殊字符上,例如“:”。 用括号搜索(关于 solr)没有帮助。
注意:我在搜索之前转义了我的字符串:
String s1 = ClientUtils.escapeQueryChars(s);
有什么建议吗?
【问题讨论】: