在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而不是过滤器。将测试和更新。
答案 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开头。