我无法让 ngrams 工作。这是我的 schema.xml:
<fieldType name="text" class="solr.TextField" omitNorms="false">
<analyzer type="index">
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.StandardFilterFactory"/>
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.EdgeNGramFilterFactory" minGramSize="1" maxGramSize="25" />
</analyzer>
<analyzer type="query">
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.StandardFilterFactory"/>
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true" />
</analyzer>
</fieldType>
我的数据库有一堆条目
“伊丽莎白”
和
“伊丽莎白”
当我尝试查询“伊丽莎白”时,我只得到“伊丽莎白”而不是“伊丽莎白”。奇怪的是,当我查看 solr 管理员时,分析页面显示 EdgenGramFilterFactory 确实可用,并导致“伊丽莎白”被扩展为
e el eli eliz eliza elizab elizabe elizabet 伊丽莎白
索引器似乎没有注意到这一点。当我将同义词过滤器从查询块移动到索引块时,我遇到了同样的问题。也就是说,当我在查询块中有同义词过滤器时,它可以工作,但是当我将它放在索引块中时,它就没有效果。
我已重新启动 Sunspot 并多次重新编制索引。没有骰子。有任何想法吗?如何直接查看索引词列表?