Solrj Java API调用详解系列(三)

上次介绍了SolrJ的一些查询,其实主要使用了add和addFilterQuery两个接口。以及一些不同查询需求的参数应该如何输入。本篇将介绍一些Solr提供的一些高级查询,比如group、facet等。

一、           Solr的不等于

不等于很简单,就是在查询条件前加一个“-”即可。

例如:

SolrQuery query = new SolrQuery();

Query.add(“-age:[ 30 TO 35]”);//查询年龄不在30~35岁区间的。

二、           分页查询

分页查询使用solrj中SolrQuery提供的两个接口,setStart(int)和setRows(int)

SolrQuery query = newSolrQuery();

query.setStart(0);

query.setRows(20);

//查询从第0条开始后20条数据。

三、           类SQL的group by查询

SolrJ提供的分组统计API:

SolrQuery query = new SolrQuery();

query.set(“group”,true);

query.set(“GroupParams.GROUP_FIELD”,”age”);//按照年龄进行分组。如果需要按多个可在age后加其他的field。如:query.set(“GroupParams.GROUP_FIELD”,”age”,”name”);

query.set(“GroupParams.GROUP_LIMIT”,10);//分组结果的每个分组值中包含的doc数量。

params.set("group.query", "学生", "学习", "grade:[0 TO 59.9]", "grade:[60 TO *]", "age:[10 TO 19]", "age:[20 TO *]" );  

更多参数参见:http://blog.csdn.net/wzb56_earl/article/details/7874797

四、           取某field的最大值、最小值、求和

SolrQuery query = new SolrQuery();

query.setGetFieldStatistics(“age”);

QueryResponse rsp = solrServer.query(query);

Map<String, FieldStatsInfo> stats =rsp.getFieldStatsInfo();

Iterator<Entry<String, FieldStatsInfo>> it =stats.entrySet();

While(it.hasNext()){

         Entry<String,FieldStatsInfo> entry = (Entry<String, FieldStatsInfo>) it.next();

long max = entry.getValue().getMax();//返回所有符合条件的age的最大值

long min = entry.getValue().getMin();//返回所有符合条件的age的最小值

long sum = entry.getValue().getSum();//返回所有符合条件的age的和

}

未完待续……后续将关注一些边缘化的参数,敬请关注!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值