solrj使用

  1. Solrj插入操作

为了方便操作,我们可以使用solrj这个客户端来进行。详情参考solrj的wikihttp://wiki.apache.org/solr/Solrj   前段时间看文章有说他用了netty,看了看代码没发现啊,只是用了httpclient,没用nio啊。使用配置就不说了,参考wiki就行,就是注意slf4j的版本,因为slf4j的api变了,如果报错的话,就换下版本吧。下面说下大概使用步骤

  • 首先创建Solr对象,根据远程和嵌入式两种方式,远程的是代码为
SolrServer server = new HttpSolrServer("http://HOST:8983/solr/");

 

  • 然后创建要插入的对象

Solrj可以以流的形式插入SolrInputDocument对象,也可以直接插入pojo。以流的形式插入例子如下

      

SolrInputDocument doc = new SolrInputDocument();
        doc.addField("address", user.getAddress());
        doc.addField("email", user.getEmail());
        doc.addField("lat", user.getLat());
        doc.addField("lng", user.getLng());
        doc.addField("id", user.getUserId());
        UpdateResponse rs = solrClient.addBySolrInputDocument(doc);

 

直接插入pojo对象的方式参考wiki上面介绍,主要方式就是在pojo上面用注解标注下,然后插入的使用用addBeans方法就行了。不论哪种方式都别忘了server.commit();来提交啊,和操作数据库一样不提交查不到啊。

  1. Solrj查询操作

首先需要建立ModifiableSolrParam或者SolrQuery对象用来存储查询参数。前者是为了方便查询对象初始化后还能修改的,对象本身带set和get方法。SolrQuery继承自ModifiableSolrParam,包含常用属性设置。下面是个使用SolrQuery的例子

 

public UserIndexDto serachByGeo(String lng, String lat, String distance) {
        SolrQuery query = new SolrQuery();
        query.setQuery("*:*");
        query.addFilterQuery("{!geofilt pt=" + lng + "," + lat + " sfield=store d=" + distance + "}");
        query.addSort("geodist(store," + lng + "," + lat + ")", SolrQuery.ORDER.asc);//距离排序
        log.info("query is " + query.toString());
        SolrDocumentList docList = solrClient.queryBySolrQuery(query).getResults();
        return changeRsToDtoList(docList);
    }

 

  1. Solrj删除

直接调用server.deleteById可以根据id直接删除

你可能感兴趣的:(solrj)