Solr 词干与模糊度一起返回 0 个结果


  • SOLR 6.4.1

我们正面临着通过 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的实际应用。

谢谢!

当您进行模糊搜索(或通配符搜索等 - 对一个术语的任何搜索都可能在索引端计算为多个标记(时,不会应用分析链(多术语感知过滤器除外,通常是小写过滤器,仅此而已(。

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

最新更新