zoukankan      html  css  js  c++  java
  • 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);
            
        }
    }
  • 相关阅读:
    一些css
    nginx访问静态资源
    ngixn 基本命令
    vue打包
    java集合-HashMap
    java多线程-线程池
    java多线程-中断线程
    服务端获取nginx代理后的用户真实ip
    nginx学习笔记
    数码视讯宣讲会现场笔试题
  • 原文地址:https://www.cnblogs.com/fangwu/p/8652945.html
Copyright © 2011-2022 走看看