• 【Solr】solr的增删改查


     

    目录

    创建工程

    普通的java web工程即可,我采用的是spring mvc!

    @Autowired
        private SolrServer solrServer;
        
        @Override
        public void addInterForProduct() throws Exception 
        {
            // 构造一篇文档
            SolrInputDocument document = new SolrInputDocument();
            //往doc中添加字段,在客户端这边添加的字段必须在服务端的配置文件中有定义
            document.addField("id", "num002");
            document.addField("title_ik", "113333");
            document.addField("content_ik", "11");
            
            solrServer.add(document);
            UpdateResponse response = solrServer.commit();
            System.out.println("---UpdateResponse-"+response);
        }

    请求后,返回值为

    ---UpdateResponse-{responseHeader={status=0,QTime=288}}

    status = 0 为成功!失败的情况还没测出来,不知道返回值是什么。知道的童鞋,请告知。

    用solr界面查询一下,新增加的已经填入索引库!

    {
      "responseHeader": {
        "status": 0,
        "QTime": 2,
        "params": {
          "q": "id:num002",
          "indent": "true",
          "wt": "json",
          "_": "1457489330978"
        }
      },
      "response": {
        "numFound": 1,
        "start": 0,
        "docs": [
          {
            "id": "num002",
            "title_ik": "113333",
            "content_ik": [
              "11"
            ],
            "_version_": 1528288311726047200
          }
        ]
      }
    }

        @Override
        public void deleteInterForProduct() throws Exception {
            // 删除id域中有num002关键字的文档
            solrServer.deleteByQuery("id:num002");
    
            // 删除solr服务端索引库中所有的文档
            //solrServer.deleteByQuery("*:*");
    
            UpdateResponse response =solrServer.commit();
            System.out.println("---deleteInterForProduct-"+response);
        }

    删除了id=num002的文档,可以删除库中的所有文档。

    返回值

    ---deleteInterForProduct-{responseHeader={status=0,QTime=54}}

    再次查询websolr,结果已经不存在了。

    所谓solr的更新操作,就是就是对相同id的文档重新添加一次。

            SolrQuery query = new SolrQuery();
    
            // 给query设置一个主查询条件:关键词
            query.set("q", "id:num001");
    
            QueryResponse response = solrClient.query(query);
    
            SolrDocumentList docs = response.getResults();
    
            long numFound = docs.getNumFound();
    
            System.out.println("总共查询到的文档数量: " + numFound);
    
            for (SolrDocument doc : docs) {
    
                System.out.println(doc.get("id"));
                System.out.println(doc.get("title_ik"));
                System.out.println(doc.get("content_ik"));
    
            }

    高量查询

    SolrQuery query = new SolrQuery();
    
            // 给query设置一个主查询条件:关键词
            query.set("q", "台灯");
    
            // 给query增加范围过滤查询条件
            // query.addFilterQuery("product_price:[0 TO 200]");
    
            // 给query增加布尔过滤条件
            // query.addFilterQuery("-product_name:台灯");
    
            /**
             * 这一句等价于上面两句过滤条件设置
             */
            // query.set("fq", "product_price:[0 TO 200] -product_name:台灯");
    
            // 给query设置默认搜索域
            query.set("df", "product_keywords");
    
            // 设置返回结果的排序规则
            query.setSort("product_price", ORDER.desc);
    
            // 设置分页参数
            query.setStart(0);
            query.setRows(20);
    
            QueryResponse response = solrClient.query(query);
    
            SolrDocumentList docs = response.getResults();
    
            long numFound = docs.getNumFound();
    
            System.out.println("总共查询到的文档数量: " + numFound);
    
            for (SolrDocument doc : docs) {
    
                System.out.println(doc.get("id"));
                System.out.println(doc.get("product_price"));
                System.out.println(doc.get("product_name"));
                System.out.println(doc.get("product_catalog_name"));
    
            }
  • 相关阅读:
    C# 函数参数object sender, EventArgs e
    Winform中利用委托实现窗体之间的传值
    Web前端学习笔记——Canvas
    js 删除 按钮所在的行
    box-sizing
    前端中关于HTML标签的属性for的理解
    apply和call的用法总结
    target 确定元素是谁??
    css3过渡和动画
    处理两端极限值的小技巧
  • 原文地址:https://www.cnblogs.com/anny0404/p/5235007.html
Copyright © 2020-2023  润新知