使全文检索查询数据经常要涉及到排序和条件查询,下面简单介绍常用的排序和查询方式。
SolrServer solr = SolrUtil.getSolrServer();
//获取查询对象
SolrQuery query = new SolrQuery();
//设置查询关键字
query.setQuery("content:程序员");
//设置查询返回的字段
query.setParam("fl", "createdAt,content");
//翻页设计参数:起始行,每行返回条数
query.setParam("start", "100");
query.setParam("rows", "10");
//字段排序
query.addSortField("createdAt", SolrQuery.ORDER.desc );
//时间条件查询
query.addFilterQuery("createdAt:[2011-01-01T00:00:01Z"+" TO 2013-01-01T00:00:01Z]");
//高亮显示
query.setHighlight(true).setHighlightSnippets(1);
需要注意,如果需要对field进行排序就必须在schema.xml中对该field进行配置格式如下:
<field name="createdAt" type="pdate" stored="true" indexed="true" multiValued="false" required="true"/>
其中 indexed="true表示运行被检索, multiValued="false" 不存在多值,默认为“true” 多值,多值无法排序。
高亮显示需要在solrconfig.xml中进行配置,修改为如下格式即可:
<formatter name="html" default="true" class="solr.highlight.HtmlFormatter"> <lst name="defaults"> <str name="hl.simple.pre"><![CDATA[<font class='highlight'>]]></str> <str name="hl.simple.post"><![CDATA[</font>]]></str> </lst> </formatter>
To be continue;