solrj 操作 solr 单机版

一、导入 jar 包

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

  或者

  链接:https://pan.baidu.com/s/14VlYDwtPpT4aiRP-UBAekg 密码:hfo4

二、添加

@Test
public void addDocuemn() throws Exception{
    //创建一个 SolrServer 对象,参数为 solr 服务的 url
    SolrServer solrServer = new HttpSolrServer("http://192.168.25.129:8080/solr/collection1");
    
    //创建一个文档对象 SolrInputDocuemnt
    SolrInputDocument document1 = new SolrInputDocument();
    //向文档对象中添加域。文档中必须包含一个 id 域,所有域的名称必须在 schema.xml 中定义
    document1.addField("id", "01");
    document1.addField("name", "jack");
    
    //创建一个文档对象 SolrInputDocuemnt
    SolrInputDocument document2 = new SolrInputDocument();
    //向文档对象中添加域。文档中必须包含一个 id 域,所有域的名称必须在 schema.xml 中定义
    document2.addField("id", "02");
    document2.addField("name", "rose");
    
    //把文档写入索引库
    solrServer.add(document1);
    solrServer.add(document2);
    //提交
    solrServer.commit();
}

三、结果

四、更新

  更新文档就是覆盖原来文档就可以了

五、删除

@Test
public void delDocument() throws Exception{
    //创建一个 SolrServer 对象,参数为 solr 服务的 url
    SolrServer solrServer = new HttpSolrServer("http://192.168.25.129:8080/solr/collection1");
    //solrServer.deleteById("01");//通过 id 删除
    solrServer.deleteByQuery("id:01 id:02");//通过查询条件批量删除( 域:值 )
    //提交
    solrServer.commit();
}

六、查询

@Test
public void queryDocument() throws Exception{
    //创建一个 SolrServer 对象,参数为 solr 服务的 url
    SolrServer solrServer = new HttpSolrServer("http://192.168.25.129:8080/solr/collection1");
    //查询类
    SolrQuery solrQuery = new SolrQuery();
    //查询关键词
    solrQuery.set("q", "name:jack");
    //查询数据
    QueryResponse response = solrServer.query(solrQuery);
    //取数据
    SolrDocumentList solrList = response.getResults();
    //一共多少条数据
    long num = solrList.getNumFound();
    System.out.println("条数:"+num);
    for (SolrDocument solrDocument : solrList) {
        String id = (String) solrDocument.get("id");
        String name = (String) solrDocument.get("name");
        System.out.println("id:"+id);
        System.out.println("name"+name);
    }
}

 7、复杂查询

@Test
public void queryDocument2() throws Exception{
    //创建一个 SolrServer 对象,参数为 solr 服务的 url
    SolrServer solrServer = new HttpSolrServer("http://192.168.25.129:8080/solr/collection1");
    //查询类
    SolrQuery solrQuery = new SolrQuery();
    
    //拼接查询条件
    solrQuery.set("张三");//设置查询内容
    solrQuery.setStart(0);
    solrQuery.setRows(20);
    solrQuery.set("df", "item_title");//设置默认搜索域
    solrQuery.setHighlight(true);//开启高亮搜索
    solrQuery.addHighlightField("name");//高亮显示字段
    solrQuery.setHighlightSimplePre("<em style = \"color:red\">");//前缀
    solrQuery.setHighlightSimplePost("</em>");//后缀
    
    //查询数据
    QueryResponse response = solrServer.query(solrQuery);
    //取数据
    SolrDocumentList solrList = response.getResults();
    //一共多少条数据
    long num = solrList.getNumFound();
    System.out.println("条数:"+num);
    for (SolrDocument solrDocument : solrList) {
        
        String id = (String) solrDocument.get("id");
        
        Map<String, Map<String, List<String>>> highlighting = response.getHighlighting();
        List<String> list = highlighting.get(solrDocument.get("id")).get("name");
        String name = "";
        if( list != null && list.size() > 0 ){
            name = list.get(0);
        }else{
            name = (String) solrDocument.get("name");
        }
        
        System.out.println("id:"+id);
        System.out.println("name"+name);
        
    }
}

 

posted @ 2018-03-26 19:16  方方方方方方  阅读(158)  评论(0编辑  收藏  举报