Solr 词干与模糊 returns 0 个结果

Solr stemming together with fuzziness returns 0 results

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

    <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~}

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

首先,我们的假设是在通过 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 个结果。有人可以详细说明吗?还是给点hints/readings?我已经查看了 Solr 的运行情况。

谢谢!

当您进行模糊搜索(或通配符搜索等 - 对一个术语的任何搜索都可能在索引端评估为多个标记)时,不应用分析链([=10 除外) =],通常是 LowercaseFilter,仅此而已。

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