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 的大小,但我认为 StandardTokenizerFactoryLowerCaseFilterFactory 在这种情况下会给我匹配。

这里是分析页面的截图

我是 运行 Solr 4.7.0.

是的。你是对的。在上述情况下,您需要将 maxGramSize 增加 15 以上才能获得所需的 result/output。

但在此之前,你真的需要将一个词拆分成多个词。我的意思是你的搜索条件是什么?您要部分词搜索吗?

例如: 当用户使用 "vedlikeh" 进行搜索时,您希望他显示 "vedlikeholdsskjema" 的结果。这是部分词搜索。如果这是要求,那么您应该继续增加 maxGramSize。

但我认为,如果您没有这样的要求,那么增加索引大小就没有意义了。您应该选择更简单的字段类型。 根据您的要求使用现有的或创建您自己的。

有关 "EdgeNGramFilterFactory" 的更多信息,请参阅

https://abhijitbashetti.blogspot.com/b/post-preview?token=LXjm5UsBAAA.tsbzRwFnTyQES0DzsnH33w.tfM2TzT7I-W7O5LeYq7qvA&postId=6309840933546641223&type=POST