如何定义一个允许我按字母顺序搜索的字段

时间:2012-09-10 20:10:27

标签: solr lucene schema custom-field-type

在SOLR中,我想定义一个按字母顺序获取结果的字段。因此,如果我搜索“S”,它将为我带来结果,以S开头(我搜索一个字段)。
这就是我尝试定义它的方式,但是,它也给我带来了不以'S'开头的结果

<fieldType name="text_general_edge_ngram" class="solr.TextField" positionIncrementGap="100">
       <analyzer type="index">
         <tokenizer class="solr.LowerCaseTokenizerFactory"/>
         <filter class="solr.EdgeNGramFilterFactory" minGramSize="1" maxGramSize="5" side="front"/>
       </analyzer>
       <analyzer type="query">
          <tokenizer class="solr.LowerCaseTokenizerFactory"/>
       </analyzer>
</fieldType>

我使用的查询:

http://MySERVER/solr/content/select/?q=alpha_title:s&start=0&rows=15

对我来说,我应该使用ngrams tokenizer而不是过滤器。将测试和更新。

2 个答案:

答案 0 :(得分:0)

正如我所想,我需要在分析器中使用ngram tokenizer而不是ngram过滤器。 所以,这是工作模式:

<fieldType name="text_general_edge_ngram" class="solr.TextField" positionIncrementGap="100">
    <analyzer type="index">
        <tokenizer class="org.apache.solr.analysis.EdgeNGramTokenizerFactory" minGramSize="1" maxGramSize="5"/> 
        <filter class="solr.LowerCaseFilterFactory"/>
    </analyzer>
    <analyzer type="query">
        <tokenizer class="solr.LowerCaseTokenizerFactory"/>
    </analyzer>
</fieldType>

答案 1 :(得分:0)

Itay Moav让我把我的评论作为答案,所以这里是:

您应该进行别名搜索,如下所示:

http://MySERVER/solr/content/select/?q=alpha_title:s*&start=0&rows=15

明星说它必须以s开头。