3

我在模式文件中使用 EdgeNGramFilterFactory 和配置

<fieldType name="prefix_token_text" class="solr.TextField" positionIncrementGap="1">
    <analyzer type="index">
        <tokenizer class="solr.WhitespaceTokenizerFactory"/>
        <filter class="solr.LowerCaseFilterFactory"/>
        <filter class="solr.EdgeNGramFilterFactory" minGramSize="1" maxGramSize="20" side="front" />
    </analyzer>
    <analyzer type="query">
        <tokenizer class="solr.WhitespaceTokenizerFactory"/>            
        <filter class="solr.LowerCaseFilterFactory"/>
    </analyzer>
</fieldType>

我在架构中有八个字段。我有配置

<field name="text" type="prefix_token_text" indexed="true" stored="false" multiValued="true"/>

<copyField source="AccountName" dest="text" /> 

我的数据索引大约三亿。

如果我搜索

sanosuke

我得到类似的结果

sanosuke3
sanosuke2
sanosuke1
sanosuke
sanosukebn
sanosukeqns
......

我想要结果sanosuke在上面。为什么会这样?帮我。谢谢大家:)

4

1 回答 1

1

向查询添加排序。像 q=text:sanonuke&sort=text asc

于 2012-12-06T17:13:53.147 回答