我已将BLÅBÆRSOMMEREN索引到Solr中,我添加了EdgeNGramFilterFactory过滤器类,如下所示:
<fieldType name="nGramtext" class="solr.TextField" positionIncrementGap="100">
<analyzer type="index">
<charFilter class="solr.HTMLStripCharFilterFactory"/>
<charFilter class="solr.MappingCharFilterFactory" mapping="mapping-ISOLatin1Accent.txt"/>
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" />
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.EdgeNGramFilterFactory" minGramSize="3" maxGramSize="15" />
<filter class="solr.EdgeNGramFilterFactory" minGramSize="3" maxGramSize="15" />
<filter class="solr.PorterStemFilterFactory"/>
</analyzer>
现在,如果我用完整的词搜索:BLÅBÆRSOMMEREN它会给我结果,但如果我用BLÅB或BLÅBÆRSOMM进行搜索,它就不会给我结果。注意我已在此字段上执行edismax查询
根据文档here我猜,它应该适用于所有这些词,但事实并非如此。
我已将Solr用于电子商务网站。最初我有 在名称字段中配置该单词,它将无法正常工作。然后我有 仅在简短描述字段中配置了该单词(已从中删除 名称)。
在此之后我执行了查询并且它有效。注意:两个字段都具有相同的字段类型。
<field name="Name" type="text" indexed="true" stored="true" required="false" />
<field name="ShortDescription" type="text" indexed="true" stored="true" required="false" />
此外,还有像:
这样的副本<copyfield source="Name" dest="nGramContent"/>
<copyField source="ShortDescription" dest="nGramContent"/>
我在这里做错了什么?请帮忙!我怎样才能做到这一点?