我在solr中有以下架构,我正在进行文本匹配以下是Fields和copyfield。
<!-- A text type with min processing -->
<fieldType name="text_min" class="solr.TextField" omitNorms="false">
<analyzer>
<tokenizer class="solr.NGramTokenizerFactory" minGramSize="3" maxGramSize="25" />
<filter class="solr.LowerCaseFilterFactory" />
</analyzer>
</fieldType>
<!--
NGram processing for substrings
-->
<fieldType name="text_ngram" class="solr.TextField" omitNorms="false">
<analyzer>
<tokenizer class="solr.LowerCaseTokenizerFactory" />
<filter class="solr.EdgeNGramFilterFactory" minGramSize="3" maxGramSize="25" side="front" />
</analyzer>
</fieldType>
<field name="namedescription" type="text_min" indexed="true" stored="true" />
<field name="namedescription_ngram" type="text_ngram" indexed="true" stored="false" />
<field name="namedescr" type="text" indexed="true" stored="false" multiValued="true"/>
<copyField source="namedescription" dest="namedescr"/>
<copyField source="namedescription_ngram" dest="namedescr"/>
我的输入:Lorem Ipsum的东西 搜索:Lorem Ipsum的东西(火柴) Lorem Ipsum(比赛) Lorem或Ipsum或Stuf(匹配) * ===&gt; Lorem Ips(不匹配。)或ipsum stu(不匹配。)
当分析器显示与namedescription字段匹配时,我必须添加什么。我错过了什么。
答案 0 :(得分:0)
首先 - 您正在将namedescription
和namedescription_ngram
复制到namedescr
字段中。
第二 - 您正在查询namedescr
。 copyField
执行以下操作 - “在调用任何已配置的原始或目标字段的分析器之前,原始文本从”源“字段发送到”dest“字段。根据{{3}}
如果您在字段Lorem Ips
和ipsum stu
上查询namedescription
和namedescription_ngram
,则会在namedescr
上有效但不在namedescr
。
由于N-Grams
未生成{{1}},因此无效。