我有一个名为“title”的字段
<field name="title" type="text_general" indexed="true" stored="true" required="true" omitNorms="false"/>
这是文件定义:
<fieldType name="text_general" class="solr.TextField" positionIncrementGap="100">
<analyzer type="index">
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" enablePositionIncrements="true" />
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.PhoneticFilterFactory" encoder="DoubleMetaphone" inject="true"/>
</analyzer>
<analyzer type="query">
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" enablePositionIncrements="true" />
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.PhoneticFilterFactory" encoder="DoubleMetaphone" inject="true"/>
</analyzer>
</fieldType>
我查询并尝试按[title]字段排序。日志说:
INFO: [] webapp=/solr path=/select/ params={sort=title+asc&start=0&q="course"&wt=json&rows=15&version=2.2indent%3Don} hits=244 status=0 QTime=1
这意味着我的语法可能正确:
q="course"&start=0&rows=15&version=2.2indent=true&wt=json&sort=Title%2Basc&sort=title+asc
问题是,结果不会按[title]字段排序。我想我在schema.xml文件中遗漏了什么,但是什么?
答案 0 :(得分:3)
通常,您可以对任何单值字段进行排序(即,不进行标记化 - 除非它使用生成单个术语的分析器 - 或多值)并进行索引。因此text和text_ *字段可以用于排序。
答案 1 :(得分:0)
供将来参考:
您要排序的字段不应该“太”标记化...
I followed this article which solved my problem.