Solr,仅在 EdgeNGramFilterFactory 匹配时返回结果
Solr, only returning results if EdgeNGramFilterFactory matches
我正在搜索定义为:
的多值字段
<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.
是的。你是对的。在上述情况下,您需要将 maxGramSize 增加 15 以上才能获得所需的 result/output。
但在此之前,你真的需要将一个词拆分成多个词。我的意思是你的搜索条件是什么?您要部分词搜索吗?
例如:
当用户使用 "vedlikeh" 进行搜索时,您希望他显示 "vedlikeholdsskjema" 的结果。这是部分词搜索。如果这是要求,那么您应该继续增加 maxGramSize。
但我认为,如果您没有这样的要求,那么增加索引大小就没有意义了。您应该选择更简单的字段类型。
根据您的要求使用现有的或创建您自己的。
有关 "EdgeNGramFilterFactory" 的更多信息,请参阅
我正在搜索定义为:
的多值字段<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.
是的。你是对的。在上述情况下,您需要将 maxGramSize 增加 15 以上才能获得所需的 result/output。
但在此之前,你真的需要将一个词拆分成多个词。我的意思是你的搜索条件是什么?您要部分词搜索吗?
例如: 当用户使用 "vedlikeh" 进行搜索时,您希望他显示 "vedlikeholdsskjema" 的结果。这是部分词搜索。如果这是要求,那么您应该继续增加 maxGramSize。
但我认为,如果您没有这样的要求,那么增加索引大小就没有意义了。您应该选择更简单的字段类型。 根据您的要求使用现有的或创建您自己的。
有关 "EdgeNGramFilterFactory" 的更多信息,请参阅