[英]Sorting solr search results using multiple fields
我在solr文件中有五个领域。
startDate---> Date type
endDate----> Date type
name -----> string type
location ----> string type
publishDate ----> Date type
现在我要按此顺序对该文档进行排序
我正在使用solrj api,为此我正在使用
solrQuery.setSort("startdate", SolrQuery.ORDER.asc)
solrQuery.addSort("enddate", SolrQuery.ORDER.asc)
solrQuery.addSort("name", SolrQuery.ORDER.asc)
solrQuery.addSort("location", SolrQuery.ORDER.asc)
solrQuery.addSort("publish_date", SolrQuery.ORDER.asc)
但这不起作用请帮助
schema.xml:
<field name="startdate" type="tdate"
indexed="true" stored="true"/>
<field name="enddate" type="tdate" indexed="true" stored="true"/>
<field name="publish_date" type="tdate" indexed="true"
stored="true"/>
<field name="location" type="text_general_edge_nGram"
indexed="true" stored="true"/>
<fieldType name="tdate" class="solr.TrieDateField"
precisionStep="6" positionIncrementGap="0"/>
<fieldType name="text_general_edge_nGram" class="solr.TextField"
positionIncrementGap="100">
<analyzer type="index">
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.StopFilterFactory" ignoreCase="true"
words="stopwords.txt" />
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.EdgeNGramFilterFactory" minGramSize="2"
maxGramSize="30" side="front" luceneMatchVersion="4.3"/>
</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>
</fieldType>
我认为它来自您的令牌生成器,产生了多值字段。 除非您使用产生单个术语的分析器,否则您将无法对该字段进行排序。
https://wiki.apache.org/solr/AnalyzersTokenizersTokenFilters
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.