Java solr 索引数据增删改查

  具体代码如下:

import java.io.IOException;
import java.util.*;

import org.apache.solr.client.solrj.SolrClient;
import org.apache.solr.client.solrj.SolrQuery;
import org.apache.solr.client.solrj.SolrRequest;
import org.apache.solr.client.solrj.SolrServerException;
import org.apache.solr.client.solrj.impl.HttpSolrClient;
import org.apache.solr.client.solrj.response.QueryResponse;
import org.apache.solr.client.solrj.response.UpdateResponse;
import org.apache.solr.common.SolrDocument;
import org.apache.solr.common.SolrInputDocument;
import java.util.Set;
import java.util.List;

/**
* @Author:sks
* @Description:
* @Date:
*/
public class solrtest {

    public static void main(String []args) throws SolrServerException, IOException{

        String urlString = "http://localhost:8983/solr/data";
        String id = "北京-报纸-电动车-资讯快报.pdf";
        Init(urlString);
//        addIndex();
        searchData();
//        Map<String, String> maps = new HashMap<String, String>();
//        maps.put("author","小王");
//        maps.put("profession","汽车");
//        maps.put("district","北京");
//        maps.put("mediatype","报纸");
//        updateMultiData(id,maps);
//
//
//        String fieldName = "author";
//        Object fieldValue = "小张";
//        updateSingleData(id,fieldName,fieldValue);
//
//        delIndexByID(id);

    }

    private static SolrClient solr;

    /**
     * @Author:sks
     * @Description:初始化solr客户端
     * @Date:
     */
    public static void Init(String urlString){

        solr = new HttpSolrClient.Builder(urlString).build();
    }

    /**
    * @Author:sks
    * @Description:添加索引
    * @Date:
    */
    public static void addIndex() throws SolrServerException, IOException{

        SolrInputDocument document = new SolrInputDocument();
        document.addField("id", "9527");
        document.addField("name", "啦啦");
        document.addField("content", "solr是个好东西");
        solr.add(document);
        solr.commit();
    }

    /**
    * @Author:sks
    * @Description:更新索引中多个属性数据
    * @Date:
     * @id:索引ID
     * @maps:属性名称,属性值键值对
    */
    public static void updateMultiData(String id,Map<String, String> maps ) throws SolrServerException,IOException{

        Set<String> keys = maps.keySet();
        SolrInputDocument doc = new SolrInputDocument();
        doc.addField("id", id);
        for(String key : keys)
        {
            HashMap<String, Object> oper = new HashMap<String, Object>();
            oper.put("set", maps.get(key));
            doc.addField(key, oper);
        }

        UpdateResponse rsp = solr.add(doc);
        System.out.println("update doc id:" + id + " result:" + rsp.getStatus() + " Qtime:" + rsp.getQTime());
        UpdateResponse rspCommit = solr.commit();
        System.out.println("commit doc to index" + " result:" + rspCommit.getStatus() + " Qtime:" + rspCommit.getQTime());

    }

    /**
    * @Author:sks
    * @Description:更新索引中单个属性数据
    * @Date:
     * @id:索引ID
     * @fieldName:属性名称
     * @fieldValue:属性值
    */
    public static void updateSingleData(String id,String fieldName,Object fieldValue) throws SolrServerException,IOException{

        HashMap<String, Object> oper = new HashMap<String, Object>();
        oper.put("set", fieldValue);
        SolrInputDocument doc = new SolrInputDocument();
        doc.addField("id", id);
        doc.addField(fieldName, oper);
        UpdateResponse rsp = solr.add(doc);
        System.out.println("update doc id:" + id + " result:" + rsp.getStatus() + " Qtime:" + rsp.getQTime());
        UpdateResponse rspCommit = solr.commit();
        System.out.println("commit doc to index" + " result:" + rspCommit.getStatus() + " Qtime:" + rspCommit.getQTime());

    }

    /**
    * @Author:sks
    * @Description:删除指定ID的索引
    * @Date:
     * @id:索引ID
    */
    public static void delIndexByID(String id) throws SolrServerException, IOException{

        UpdateResponse ur = solr.deleteById(id);
        System.out.println(ur);

        UpdateResponse c = solr.commit();
        System.out.println(c);

    }

    /**
    * @Author:sks
    * @Description:查询数据
    * @Date:
    */
    public static void searchData() throws SolrServerException,IOException {
        //使用这个对象做查询
        SolrQuery params = new SolrQuery();
        //查询所有数据
//        params.setQuery("*:*");
        params.setQuery("id:广州-杂志-汽车-电台资讯快报-2015年2月.docx");
        //分页,默认是分页从0开始,每页显示10行
        params.setStart(0);
        params.setRows(30);

        QueryResponse queryResponse = solr.query(params);
        //拿到数据集合,返回查询结果
        List<SolrDocument> list = queryResponse.getResults();

        //循环打印数据集合
        for (SolrDocument solrDocument : list) {
            Object id = solrDocument.get("id");
            System.out.println(id.toString());

            Object fileSize = solrDocument.get("fileSize");
            System.out.println(fileSize.toString());

            Object fileLastModified = solrDocument.get("fileLastModified");
            System.out.println(fileLastModified.toString());

            Object fileAbsolutePath = solrDocument.get("fileAbsolutePath");
            System.out.println(fileAbsolutePath.toString());

            Object author = solrDocument.get("author");
            System.out.println(author.toString());

//            Object text = solrDocument.get("text");
//            System.out.println(text.toString());
            Object title = solrDocument.get("title");
            System.out.println(title.toString());

            Object author_area_keywor = solrDocument.get("author_area_keyword");
            System.out.println(author_area_keywor.toString());


        }
    }




}

 

posted on 2017-12-13 15:12  shaomine  阅读(6531)  评论(0编辑  收藏  举报