Solr 入门教程--solrJ6.3.0

来源:互联网 发布:地球污染数据 编辑:程序博客网 时间:2024/06/05 19:50

今天小编给大家分享一下写的程序,如何通过SolrJ来对solr进行增删改查。首先需要建立工程,导入Jar包。我采用的版本是SolrJ 6.3.0。

    JAR包截图:链接地址:solrJ6.3.0。

    


下面是我写的程序:这个是我的包的结构,以及import入程序的类名字。

package cn.ihep.dao;import cn.ihep.dto.Content;import org.apache.solr.client.solrj.SolrClient;import org.apache.solr.client.solrj.SolrQuery;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.SolrDocumentList;import org.apache.solr.common.SolrInputDocument;import org.apache.solr.common.params.SolrParams;import java.io.IOException;import java.util.List;import java.util.Map;
(一)增加一条索引,方式一,采用Document

public void addindex()throws IOException,SolrServerException {        String urlString = "http://192.168.14.167:8080/solr/core";        SolrClient solr = new HttpSolrClient.Builder(urlString).build();        SolrInputDocument document = new SolrInputDocument();        document.addField("id", "552199");        document.addField("url","it.ac.cn");        document.addField("title", "Gouda cheese wheel");        document.addField("content", "49.99");        UpdateResponse response = solr.add(document);        solr.commit();}

(二)增加一条索引,方式二,采用Javabean

 public void addindex()throws IOException,SolrServerException {        String urlString = "http://192.168.14.167:8080/solr/core";        SolrClient solr = new HttpSolrClient.Builder(urlString).build();        Content content = new Content();        content.setId("11010");        content.setTitle("Gouda cheese wheel");        content.setContent("Gouda cheese wheel");        content.setUrl("Gouda cheese wheel");        solr.addBean(content);        solr.commit();    }

javaBean格式:set以及get方法这里就不在说了。

import org.apache.solr.client.solrj.beans.Field;public class Content {    @Field(value = "id")    private String id;    @Field(value = "title")    private String title;    @Field(value = "content")    private String content;    @Field(value = "url")    private String url;    ...}

(三)通过某个字段,删除一条索引,我编程选择的是通过ID来删除索引。

   

    public void delIndex()throws IOException,SolrServerException{        String urlString = "http://192.168.14.167:8080/solr/core";        SolrClient solr = new HttpSolrClient.Builder(urlString).build();        solr.deleteById("1100zb");        solr.commit();    }

(四)查找索引以及数据,设置分页,高亮显示。

//进行查找功能    public void find() throws IOException, SolrServerException {        String urlString = "http://192.168.14.167:8080/solr/core";        SolrClient solr = new HttpSolrClient.Builder(urlString).build();        //以后参数都是通过这个对象去构造        SolrQuery query = new SolrQuery();        query.setQuery("title:Gouda");        //分页设置        query.setStart(0);        query.setRows(10);        //高亮设置        //开启高亮        query.setHighlight(true);        //高亮显示的格式        query.setHighlightSimplePre("<font color='red'>");        query.setHighlightSimplePost("</font>");        //我需要将那几个字段进行高亮        query.setParam("hl.fl","url,title");        QueryResponse queryResponse =null;        queryResponse = solr.query(query);        SolrDocumentList list = null;        list = queryResponse.getResults();        //返回高亮之后的结果        Map<String,Map<String,List<String>>> mapList =queryResponse.getHighlighting();        for(SolrDocument solrDocument:list){            Object id  = solrDocument.get("id");            Map<String,List<String>> fieldMap =  mapList.get(id);            List<String> listUrl = fieldMap.get("url");            List<String> listTitle = fieldMap.get("title");            System.out.println("listUrl"+listUrl);            System.out.println("listTitle"+listTitle);        }        for(SolrDocument solrDocument:list){            Object content  = solrDocument.get("content");            Object url = solrDocument.get("url");            Object title = solrDocument.get("title");            System.out.println("content"+content);            System.out.println("url"+url);            System.out.println("title"+title);        }