如何在solr 7.7上启用模糊搜索?
我试图对标题文本进行模糊搜索,但solr没有对拼写错误的品牌名称“hilfinger”查询给出任何结果: 使用标准搜索,我将获得关于正确命名hilfiger的结果:如何在solr 7.7上启用模糊搜索?,solr,Solr,我试图对标题文本进行模糊搜索,但solr没有对拼写错误的品牌名称“hilfinger”查询给出任何结果: 使用标准搜索,我将获得关于正确命名hilfiger的结果: 在solr的配置中是否需要激活某些东西以启用模糊搜索,或者获得0个结果的原因是什么?是!你可以。您只需在schema.xml中正确配置要启用模糊搜索或部分匹配的字段。您可以在索引期间向所需字段添加过滤器,以告知Solr除了原始值之外还存储每个值的值。稍后,可以在此字段上执行模糊搜索。默认情况下存在两种类型的过滤器,您只需将它们附加到
在solr的配置中是否需要激活某些东西以启用模糊搜索,或者获得0个结果的原因是什么?是!你可以。您只需在
schema.xml
中正确配置要启用模糊搜索或部分匹配的字段。您可以在索引期间向所需字段添加过滤器,以告知Solr除了原始值之外还存储每个值的值。稍后,可以在此字段上执行模糊搜索。默认情况下存在两种类型的过滤器,您只需将它们附加到索引分析器过滤器链
- -仅匹配前缀和后缀(仅匹配搜索短语的边)
- -匹配短语中任意位置的ngrams
<fieldType name="title" class="solr.TextField" positionIncrementGap="100">
<analyzer type="index">
<tokenizer class="solr.LowerCaseTokenizerFactory"/>
<filter class="solr.EdgeNGramFilterFactory" minGramSize="2" maxGramSize="15"/>
</analyzer>
<analyzer type="query">
<tokenizer class="solr.LowerCaseTokenizerFactory"/>
</analyzer>
</fieldType>
此处,配置将NGRAM的最小大小定义为2个字母,最大为15个字母。
您可以通过替换行来更改过滤器,以从字段值的任何位置启用部分匹配
<filter class="solr.EdgeNGramFilterFactory" minGramSize="2" maxGramSize="15"/>
有,
字段的类型是什么?词干化可能会影响存储的标记,这意味着hilfiger词干化为hilfig,并且这比默认编辑距离离hilfinger更远。
<fieldType name="title" class="solr.TextField" positionIncrementGap="100">
<analyzer type="index">
<tokenizer class="solr.LowerCaseTokenizerFactory"/>
<filter class="solr.EdgeNGramFilterFactory" minGramSize="2" maxGramSize="15"/>
</analyzer>
<analyzer type="query">
<tokenizer class="solr.LowerCaseTokenizerFactory"/>
</analyzer>
</fieldType>
<filter class="solr.EdgeNGramFilterFactory" minGramSize="2" maxGramSize="15"/>
<filter class="solr.NGramFilterFactory" minGramSize="2" maxGramSize="15"/>