首页 > 解决方案 > Solr 词干与模糊性一起返回 0 个结果

问题描述

我们正面临通过 SnowballPorterFilterFactory for German2 的 solr 模糊性和词干问题。

    <fieldType name="text_de_de" class="solr.TextField" positionIncrementGap="100">
        <analyzer>
            <tokenizer class="solr.StandardTokenizerFactory"/>
            <filter class="solr.StopFilterFactory" words="lang/stopwords_de.txt" ignoreCase="true"/>
            <filter class="solr.ManagedStopFilterFactory" managed="de_DE"/>
            <filter class="solr.SynonymFilterFactory" ignoreCase="true" synonyms="synonyms.txt"/>
            <filter class="solr.ManagedSynonymFilterFactory" managed="de_DE"/>
            <filter class="solr.WordDelimiterFilterFactory" preserveOriginal="1"
                      generateWordParts="1" generateNumberParts="1" catenateWords="1"
                      catenateNumbers="1" catenateAll="0" splitOnCaseChange="1"/>
            <filter class="solr.LowerCaseFilterFactory"/>
            <filter class="solr.ASCIIFoldingFilterFactory"/>
            <filter class="solr.SnowballPorterFilterFactory" language="German2"/>
        </analyzer>
    </fieldType>

此外,在我们的查询配置中,我们添加了“~”来表示模糊。

{q=field_text_de_de_mv:XYZ~}

作为查询解析器,标准查询解析又名。使用了lucene。

首先,我们的假设是在通过 SnowballPorter 进行词干提取之前应用了模糊性。意义:

SearchTerm: Xyzker ->(query) Xyzker~ (check for (XyzKer, XyzXer, Xyzer etc..)) -> stem(Xyzxer, Xyzxer... ) HIT -> deliver result 

这个对吗?是否有任何建议使用带有或不带有词干的模糊性(https://lucene.apache.org/solr/guide/6_6/the-standard-query-parser.html#TheStandardQueryParser-FuzzySearches)?

所以现在到实际行为:

使用字段类型 text_de_de 索引“Xyzker”,因此应用了词干提取。查询“Xzyser”(包含一个用于 k 的拼写错误)。预期结果:默认情况下,“Xyzker”会出现模糊性 (~)。

我们得到 0 个结果。有人可以详细说明吗?或者给出一些提示/读数?我已经检查了 Solr 的实际应用。

谢谢!

标签: solrlucenefuzzy-searchstemmingfuzzy

解决方案


当您进行模糊搜索(或通配符搜索等 - 对一个术语的任何搜索都可能评估为索引端的多个标记)时,不会应用分析链(除了具有多术语意识的过滤器,它通常是小写过滤器,仅此而已)。

解决方案通常是在令牌进入的过程中对其进行规范化,可能通过特定于您正在搜索的数据编写的过滤器。


推荐阅读