我正在搜索多值字段,该字段定义为:
<fieldType name="text" class="solr.TextField" positionIncrementGap="100">
<analyzer type="index">
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.EdgeNGramFilterFactory" minGramSize="2" maxGramSize="15"
side="front"/>
</analyzer>
<analyzer type="query">
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.LowerCaseFilterFactory"/>
</analyzer>
</fieldType>
但如果我正在搜索超过15 maxGramSize
的单词,我就不会得到任何结果。所以使用以下索引:
vedlikeholdsskjema på toyota corolla Gode ting kiwi kan spises med skall, banan
我得到的结果是“kiwi”,“banan”等,但不是“vedlikeholdsskjema”。我想我可以增加maxGramSize
尺寸,但在这种情况下我会认为StandardTokenizerFactory
和LowerCaseFilterFactory
会给我匹配。
以下是分析页面的屏幕截图。
我正在运行Solr 4.7.0。
答案 0 :(得分:0)
是。你是对的。在上述情况下,您需要将maxGramSize增加到15以上才能获得所需的结果/输出。
但在此之前,你真的需要一个词被分成多个单词。我的意思是你的搜索条件是什么?你想要部分单词搜索吗?
例如: 当用户使用&#34; vedlikeh&#34;然后你希望他展示&#34; vedlikeholdsskjema&#34;的结果。这是部分单词搜索。如果是要求那么你应该继续增加maxGramSize。
但我认为如果你没有这样的要求那么就没有必要增加索引的大小。你应该选择更简单的字段类型。 根据您的要求,使用现有产品或创建自己的产品。
有关&#34; EdgeNGramFilterFactory&#34;的更多信息请参考