我一直在使用Solr一段时间,只是告诉我我已经声明了Reverse WildCard过滤器,但没有任何字段被声明/关联到类型' textReverse'&没有复制字段将值复制到任何一个。然而,使用领先的通配符搜索工作!
将字段类型设置为' textReverse'启用前导通配符搜索?
只是让这个声明有效,
<fieldType name="textReverse" class="solr.TextField" positionIncrementGap="100">
<analyzer type="index">
<tokenizer class="solr.WhitespaceTokenizerFactory"/>
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.ReversedWildcardFilterFactory" withOriginal="true" maxPosAsterisk="3" maxPosQuestion="2" maxFractionAsterisk="0.33"/>
</analyzer>
<analyzer type="query">
<tokenizer class="solr.WhitespaceTokenizerFactory"/>
<filter class="solr.LowerCaseFilterFactory"/>
</analyzer>
</fieldType>
无需实际声明该类型的字段,例如,
<field name="fooColumn" type="textReverse" indexed="true" stored="true" omitNorms="true"/>
但我确实有&#39; fooColumn&#39;作为类型&#39;文本&#39; (没有反向通配符过滤器的字段类型..)
理解上有差距吗?
答案 0 :(得分:2)
ReversedWildcardFilterFactory
启用更快引导通配符查询 - 即使没有此过滤器,此类查询也能正常运行。您可以通过从配置中删除字段类型声明然后使用前导通配符触发一些查询来确认这一点。
看一下solr.ReversedWildcardFilterFactory here的描述。如果您开始使用此过滤器,那么带有前导通配符的查询的性能应该会有很大提高。