在Solr中通过查询搜索文档有问题。
该文件如下所示:
{
"id": "890_03366_00739",
"text": ["2509412 MARCO GLLMRC86E28L736X 03366 00739 "],
"_version_": 1612212288969769000
}如果使用查询text:GLLMRC86E28L736进行搜索,就会正确地找到文档。
如果我尝试使用查询text:GLLMRC86E28L736X,我找不到文档,为什么会发生这种情况?
在我的模式中,字段text被声明为<field name="text" type="text_general" indexed="true" required="true" stored="true"/>
我用的是Solr 7.0.0。
更新:
“分析”页面显示了我的字段“文本”和查询GLLMRC86E28L736X的输出

查询GLLMRC86E28L736

GLLMRC86E28L736X搜索

GLLMRC86E28L736搜索

字段类型"text_general“声明为
<fieldType name="text_general" class="solr.TextField" positionIncrementGap="100" multiValued="true">
<analyzer type="index">
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.StopFilterFactory" words="stopwords.txt" ignoreCase="true"/>
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.StandardFilterFactory"/>
<filter class="solr.PorterStemFilterFactory"/>
<filter class="solr.EdgeNGramFilterFactory" maxGramSize="15" minGramSize="2"/>
</analyzer>
<analyzer type="query">
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.StopFilterFactory" words="stopwords.txt" ignoreCase="true"/>
<filter class="solr.SynonymGraphFilterFactory" expand="true" ignoreCase="true" synonyms="synonyms.txt"/>
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.StandardFilterFactory"/>
<filter class="solr.PorterStemFilterFactory"/>
</analyzer>
</fieldType>发布于 2018-09-24 09:25:24
您的EdgeNgramFilter有一个maxGramSize设置,该设置切断标记的结尾--在索引时删除X,而在查询时保留X(如果您试图匹配前缀,则应该如此)。
在分析屏幕的左侧,您可以看到它生成GLLMRC86E28L736X版本,但最后一个字符被删除-即在添加最后一个版本之前它停止生成版本。查询仍然是GLLMRC86E28L736X,因为没有标记匹配的GLLMRC86E28L736X (只有GLLMRC86E28L736,因为它在生成之后停止了),所以没有命中。
调整您的字段的maxGramSize,或者搜索一个不执行任何编辑语法的字段,如果您只想得到精确匹配的话。
此外,如果我没记错的话,这不是示例中包含的text_general字段类型的默认表单,因此在将来,如果还包括字段类型,这将是有帮助的。
https://stackoverflow.com/questions/52444329
复制相似问题