【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")); }
Don't stop!Never give up!