【发布时间】:2022-11-13 00:30:53
【问题描述】:
我有包含 name_en、name_de、name_fr 等字段的文档。还有单词铜tt呃用英语和亩tt呃在德国。如果我用 name_en:cu 进行模糊搜索吨er~1(只有一个 t)它工作正常,但如果我搜索 name_de:mu吨er~1 它只是不返回任何结果。
但是它适用于模糊距离 2。所以 name_de:muter~2 工作正确并返回 mutter。语言在 schema.xml 中有不同的分析器,所以这应该是不同的。但仍不清楚为什么德国距离 1 不起作用。
这是德语的配置
<analyzer type="index">
<tokenizer class="solr.StandardTokenizerFactory" />
<filter class="solr.ManagedStopFilterFactory" managed="de" />
<filter class="solr.LowerCaseFilterFactory" />
<filter class="solr.ShingleFilterFactory"/>
<filter class="solr.KeywordMarkerFilterFactory" protected="protwords.txt" />
<filter class="solr.GermanStemFilterFactory" />
<filter class="solr.RemoveDuplicatesTokenFilterFactory" />
</analyzer>
有人可以解释为什么距离是 2,而不是 1。据我观察,mu 之间的距离tt呃和穆吨er 是 1,而不是 2。
【问题讨论】:
-
您是否检查了分析页面上创建的令牌? GermanStemFilterFactory 是否产生了任何问题?
-
@AbhijitBashetti 不,我没有。我如何通过查询输出这些标记以查看它为什么不起作用?是的,我已经用英文过滤器替换了这个过滤器,并且它像英文一样工作。但我仍然不明白为什么这个过滤器后的距离是 2。
标签: solr lucene levenshtein-distance fuzzy-search