我需要提升从字符串开头找到的结果。例如,我必须到国家:埃及和塞舌尔。
文本字段和solr响应中的用户类型“e”将是:
但是你可以看到“埃及”以“e”开头。我需要提升这个结果:
任何其他结果都应该照常得分。有没有任何特殊的标记器/序列化器?或者可能是SolrQuery语法中的特殊字符?
UPD:
描述文字字段类型的schema.xml
的一部分:
<fieldType name="text" class="solr.TextField" omitNorms="false">
<analyzer type="index">
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.StandardFilterFactory"/>
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.NGramFilterFactory" minGramSize="1" maxGramSize="20" side="front" />
</analyzer>
<analyzer type="query">
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.StandardFilterFactory"/>
<filter class="solr.LowerCaseFilterFactory"/>
</analyzer>
</fieldType>
答案 0 :(得分:0)
使用EdgeNGramFilterFactory
代替NGramFilterFactory
解决问题:
<fieldType name="text_start_end" class="solr.TextField" omitNorms="false">
<analyzer>
<tokenizer class="solr.ClassicTokenizerFactory"/>
<filter class="solr.PositionFilterFactory"/>
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.EdgeNGramFilterFactory" minGramSize="1" maxGramSize="20" side="front" />
</analyzer>
</fieldType>