要使SOLR中的字段可排序,我需要做什么?

时间:2012-03-02 15:57:22

标签: sorting solr lucene xsd solr-schema

我有一个名为“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"&amp;start=0&amp;rows=15&amp;version=2.2indent=true&amp;wt=json&amp;sort=Title%2Basc&sort=title+asc

问题是,结果不会按[title]字段排序。我想我在schema.xml文件中遗漏了什么,但是什么?

2 个答案:

答案 0 :(得分:3)

通常,您可以对任何单值字段进行排序(即,不进行标记化 - 除非它使用生成单个术语的分析器 - 或多值)并进行索引。因此text和text_ *字段可以用于排序。

答案 1 :(得分:0)

供将来参考: 您要排序的字段不应该“太”标记化...
I followed this article which solved my problem.