从字符串的开头搜索Solr

时间:2014-11-13 12:26:59

标签: solr lucene sunspot

我需要提升从字符串开头找到的结果。例如,我必须到国家:埃及和塞舌尔。

文本字段和solr响应中的用户类型“e”将是:

  • 取值的ë YCH的ë LL 电子取值
  • 电子 gypt

但是你可以看到“埃及”以“e”开头。我需要提升这个结果:

  • 电子 gypt
  • 取值的ë YCH的ë LL 电子取值

任何其他结果都应该照常得分。有没有任何特殊的标记器/序列化器?或者可能是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>

1 个答案:

答案 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>