solr - 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 的实际应用。
谢谢!
解决方案
当您进行模糊搜索(或通配符搜索等 - 对一个术语的任何搜索都可能评估为索引端的多个标记)时,不会应用分析链(除了具有多术语意识的过滤器,它通常是小写过滤器,仅此而已)。
解决方案通常是在令牌进入的过程中对其进行规范化,可能通过特定于您正在搜索的数据编写的过滤器。
推荐阅读
- linux - 如何使用 --file=script-file 选项在 sed 命令中输入要搜索和替换的文件
- angular - angular 6 bootstrap 如何在组件模板中将宽度设置为 td 表
- python - Scraper 未提取 url 链接:
- c - 确定用户输入值的数据类型
- python - 从另一个类访问实例变量
- java - 如何从可执行文件加载我的本地主机 java spring boot web 应用程序
- java - 将json字符串转换为日期对象
- google-maps - 如何添加路线图和交通图层
- c++ - 这行 else if(open_nodes_map[xdx][ydy]>m0->getPriority()) 是什么意思?
- c++ - 在 Set/Map 中使用向量作为键的 C++ 不会产生唯一答案