我试图将ngram过滤器添加到我现有的模式中以启用子字符串搜索...
当前solr索引有1000万行......如果我将此更改添加到架构中。我需要重建索引吗?
<fieldType name="text" class="solr.TextField" positionIncrementGap="100">
<analyzer type="index">
<filter class="solr.EdgeNGramFilterFactory" minGramSize="3" maxGramSize="25" />
答案 0 :(得分:3)
您需要重新索引更改才能对已编制索引的文档生效。 EdgeNGramTokenFilter的工作原理是将标记分解为n-gram并索引每个n-gram,这只能在索引时完成。如果你没有重新索引Solr将工作,但你将无法获得正确的子字符串搜索。
通常,只要您更改字段的分析器,就需要重新索引。如果当前模式与索引期间使用的模式不匹配,Solr通常会破坏或产生不正确的搜索结果。如果你可以在没有太多痛苦的情况下重新索引,那么这将比挖掘并弄清楚为什么Solr在模式改变后行为不端后容易得多。