solr 语法

一: solrj通信

      <dependency>		 
              <groupId>org.apache.solr</groupId>
              <artifactId>solr-solrj</artifactId>
      </dependency>


solrj  与 solr服务端通信方案:

1: 走Http请求形式,譬如:CommonsHttpSolrServer  、HttpSolrServer

2:访问SolrCore  譬如:SolrClient 、SolrServer


二: solrj检索

1: 多条件查询    (q)

 
 

SolrQuery parameters = new SolrQuery();

parameters.set("q", "id:1 and id:6");

QueryResponse response = null;

try {

    response = server.query(parameters);

}catch (SolrServerException e) {

    e.printStackTrace();

} catch (IOException e) {

    e.printStackTrace();

}

对应:http://192.168.2.254:8090/solr/collection1/select?q=*%3A*&wt=json&indent=true

2:过滤查询    (fq)

 parameters.addFilterQuery("sid:*1*,id:1");  //注意先后,可变字符串(字符串数组)

3:时间区域查询    (fq)

parameters.addFilterQuery(" createtime:["+beginDate+" TO "+endDate+"]");
parameters.addFilterQuery("createtime:[2015-11-26T10:40:01Z TO 2015-12-01T09:53:17Z]");

(PS:  SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'");)

4: 分组查询    (group=true&group.field=field

SolrQuery parameters = new SolrQuery();
parameters.setParam(GroupParams.GROUP, true); // 是否分组查询
parameters.set(GroupParams.GROUP_TOTAL_COUNT, true); //返回分组个数
parameters.setParam(GroupParams.GROUP_FIELD,"id");

5:排序    (sort)

parameters.setSort("id", SolrQuery.ORDER.asc);

6:分页       (start=1&rows=2

parameters.setStart(1); //开始索引
parameters.setRows(20); //记录数

统计查询    (stats=true&stats.field=field)

parameters.setGetFieldStatistics(true);			
parameters.addGetFieldStatistics(searchModel.getStatsFieldArr());

7:返回结果处理

HttpSolrServer server = new HttpSolrServer(" 
QueryResponse response = server.query(parameters);		
List<AfferToUs> list = response.getBeans(AfferToUs.class); 

PS: AfferToUs 实体类 必须添加solrj注解 @Field (org.apache.solr.client.solrj.beans.Field),对应Schema.xml中配置的Field字段否则会映射不到对应字段 没有数据

8:分组结果处理

List<AfferToUs> list = new ArrayList<AfferToUs>();		
GroupResponse groupResponse = response.getGroupResponse();    		
List<GroupCommand> list3 = groupResponse.getValues();		
for (GroupCommand groupCommand : list3) {			
    List<Group> groups = groupCommand.getValues();						for(Group group : groups) { 				
            SolrDocumentList result = group.getResult();						for (SolrDocument solrDocument : result) {			    	
                        list.add((AfferToUs) SolrObject.toBean(solrDocument, AfferToUs.class));				}								}		}

PS:http://www.solr.cc/blog/?p=256

PS: http://wiki.apache.org/solr/Solrj#HttpSolrServer


转载于:https://my.oschina.net/ZFrances/blog/632113

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值