Solr,仅在EdgeNGramFilterFactory匹配时返回结果

时间:2015-03-04 08:03:04

标签: solr

我正在搜索多值字段,该字段定义为:

<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会给我匹配。

以下是分析页面analysis的屏幕截图。

我正在运行Solr 4.7.0。

1 个答案:

答案 0 :(得分:0)

是。你是对的。在上述情况下,您需要将maxGramSize增加到15以上才能获得所需的结果/输出。

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

例如: 当用户使用&#34; vedlikeh&#34;然后你希望他展示&#34; vedlikeholdsskjema&#34;的结果。这是部分单词搜索。如果是要求那么你应该继续增加maxGramSize。

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

有关&#34; EdgeNGramFilterFactory&#34;的更多信息请参考

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