我有一个名为“customer”的字段名称包含以下值,
bic corporation
solr schema.xml中的customer字段
<field docValues="true" indexed="true" multiValued="false" name="customer" stored="true" type="TextField"/>
我需要对上述客户值执行不区分大小写的排序。所以我可以得到如下数据,
为此我创建一个名为“customer_sort”的新copyField scheme.xml中的字段
<field docValues="true" indexed="true" multiValued="false" name="customer_sort" stored="false" type="LowerTextField"/>
scheme.xml中的fieldType
<fieldType name="LowerTextField" class="solr.TextField" sortMissingLast="true" positionIncrementGap="1000">
<analyzer type="index">
<tokenizer class="solr.KeywordTokenizerFactory"/>
<filter class="solr.LowerCaseFilterFactory"/>
</analyzer>
<analyzer type="query">
<tokenizer class="solr.KeywordTokenizerFactory"/>
<filter class="solr.LowerCaseFilterFactory"/>
</analyzer>
</fieldType>
scheme.xml中的copyfield
<copyField source="customer" dest="customer_sort"/>
目前的排序结果是
根据ascii值进行排序。即(A然后a,B然后b,......)。
当我尝试使用alphaOnlySort时也是如此。
任何人都能告诉我我错过了什么吗?
谢谢
答案 0 :(得分:0)
@MatsLindh请找到Solr_query和analyzer_screen looks like
的图片答案 1 :(得分:0)
您可以在schema.xml中使用它吗?您还提到了 type =&#34; TextField&#34; 。我想了解这一点。
<fieldType name="LowerTextField" class="solr.TextField" sortMissingLast="true" positionIncrementGap="1000">
<analyzer type="index">
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" />
<filter class="solr.LowerCaseFilterFactory"/>
</analyzer>
<analyzer type="query">
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" />
<filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>
<filter class="solr.LowerCaseFilterFactory"/>
</analyzer>