将分析器与solr一起使用时无法排序

时间:2019-10-28 11:35:43

标签: solr

我正在尝试使用通配符搜索,并且有效,但排序无效。 我的Solr模式文件:

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<schema name="addressByFilters" version="1.5">
<types>
<fieldType class="org.apache.solr.schema.TextField" name="TextField">
    <analyzer type="index">
        <tokenizer class="solr.KeywordTokenizerFactory"/>
        <filter class="solr.LowerCaseFilterFactory"/>
        <filter class="solr.ReversedWildcardFilterFactory" />
    </analyzer>
    <analyzer type="query">
        <tokenizer class="solr.KeywordTokenizerFactory"/>
        <filter class="solr.LowerCaseFilterFactory"/>
    </analyzer>
</fieldType>
</types>
<fields>
    <dynamicField indexed="true" multiValued="false" name="address*" type="TextField"/>
    <field indexed="true" multiValued="false" name="address_code" stored="true" type="TextField"/>
</fields>
</schema>

当我通过新的分析器在上面更改分析器时,可以进行排序,但是不能使用通配符搜索。

<fieldType class="org.apache.solr.schema.TextField" name="TextField">
<analyzer>
        <tokenizer class="solr.KeywordTokenizerFactory"/>
        <filter class="solr.LowerCaseFilterFactory"/>
</analyzer>
</fieldType>

我的Solr查询是:

solr_query = ' { "q" : "address1:*Test\\ ace*", "sort" : "address_code asc", "start":"0", "useFieldCache":true }' limit 100; 

我该如何解决?非常感谢

1 个答案:

答案 0 :(得分:0)

使用不同的字段进行排序和搜索。当您遇到这种情况(排序所需的处理与搜索所需的处理不同)时,这特别有用。

Use a copyField instruction可以在两个字段中获得相同的内容。

<copyField source="address_code" dest="address_code_sort" />