设为首页 收藏本站
查看: 896|回复: 0

[经验分享] solr的安装与使用

[复制链接]

尚未签到

发表于 2017-12-18 22:37:09 | 显示全部楼层 |阅读模式
package com.demo.web.solr.PDF;  

import java.io.IOException;  

import java.util.ArrayList;  

import java.util.Collection;  

import java.util.HashMap;  

import java.util.List;  

  

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.request.UpdateRequest;  

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.junit.Test;  

  

  

public>//solr 服务器地址  public static final String solrServerUrl = "http://localhost:8983/solr";
  //solrhome下的core
  public static final String solrCroeHome = "artcile";
  SolrClient solrclient;
  public SolrInsertTest(){
  this.solrclient=new HttpSolrClient(solrServerUrl + "/" + solrCroeHome);
  }   
  //增加文档:addDucument()  
  
  @Test
  public void addDucument() throws IOException{
  System.out.println("======================add doc ===================");
  

  Collection<SolrInputDocument> docs = new ArrayList<SolrInputDocument>();
  

  for (int i =6; i < 9; i++) {
  SolrInputDocument doc = new SolrInputDocument();
  doc.addField("id", i*100);
  doc.addField("name", "user"+i);
  doc.addField("price", "100");
  doc.addField("description", "新增文档"+i);
  doc.addField("doc", "d09ffe7ec68744ceb342a658be6e2c1a");
  

  docs.add(doc);
  }
  try {           
  UpdateResponse rsp = solrclient.add(docs);
  // UpdateResponse rsp = solrclient.addBean(docs);

  System.out.println("Add doc>  UpdateResponse rspcommit = solrclient.commit();
  System.out.println("commit doc to index" + " result:" + rsp.getStatus() + " Qtime:" + rsp.getQTime());
  

  } catch (SolrServerException  e) {
  // TODO Auto-generated catch block
  
            e.printStackTrace();
  }
  
}
  //@Test
  public void queryDocuments(){
  System.out.println("-----------查询文档:queryDocuments()----------- ");
  SolrQuery params = new SolrQuery();
  

  System.out.println("======================query===================");
  

  params.set("q", "*:*");
  params.set("start", 0);
  params.set("rows", 20);
  params.set("sort", "id asc");
  

  try {
  QueryResponse rsp = solrclient.query(params);
  SolrDocumentList docs = rsp.getResults();
  System.out.println("查询内容:" + params);
  System.out.println("文档数量:" + docs.getNumFound());
  System.out.println("查询花费时间:" + rsp.getQTime());
  

  System.out.println("------query data:------");
  for (SolrDocument doc : docs) {
  // 多值查询
  @SuppressWarnings("unchecked")

  String>  String name = (String) doc.getFieldValue("name");
  String price = String.valueOf(doc.getFieldValue("price"));
  String des = (String) doc.getFieldValue("description");               
  List<String> dock = (List)doc.getFieldValue("doc");               
  

  System.out.println("id:"+id+"\t name:" + name + "\t description:"+des+"\t price:"+price+"\t doc:"+dock );
  }
  System.out.println("-----------------------");
  } catch (Exception e) {
  e.printStackTrace();
  }
  }
  //@Test

  public void deleteById(String>
  System.out.println(" -----------删除文档BY>  System.out.println("======================deleteById ===================");
  

  try {
  UpdateResponse rsp = solrclient.deleteById(id);
  solrclient.commit();

  System.out.println("delete>  } catch (SolrServerException | IOException e) {
  e.printStackTrace();
  }
  }
  // -----------删除文档BY QUERY:deleteByQuery()-----------      
  public void deleteByQuery(String query) {
  System.out.println("======================deleteByQuery ===================");
  

  UpdateResponse rsp;
  

  try {
  UpdateRequest commit = new UpdateRequest();
  commit.deleteByQuery(query);
  commit.setCommitWithin(500);
  commit.process(solrclient);
  System.out.println("url:"+commit.getPath()+"\t xml:"+commit.getXML()+" method:"+commit.getMethod());
  
//            rsp = client.deleteByQuery(query);
  
//            client.commit();
  
//            System.out.println("delete query:" + queryCon + " result:" + rsp.getStatus() + " Qtime:" + rsp.getQTime());
  } catch (SolrServerException | IOException e) {
  e.printStackTrace();
  }
  

  }
  

  

  
//-----------更新文档:updateDocuments()-----------
  //@Test

  public void updateDocuments(int>  System.out.println("======================updateField ===================");
  HashMap<String, Object> oper = new HashMap<String, Object>();
  
//        多值更新方法
  
//        List<String> mulitValues = new ArrayList<String>();
  
//        mulitValues.add(fieldName);
  
//        mulitValues.add((String)fieldValue);
  oper.put("set", fieldValue);
  

  SolrInputDocument doc = new SolrInputDocument();

  doc.addField("id",>  doc.addField(fieldName, oper);
  try {
  UpdateResponse rsp = solrclient.add(doc);

  System.out.println("update doc>  UpdateResponse rspCommit = solrclient.commit();
  System.out.println("commit doc to index" + " result:" + rspCommit.getStatus() + " Qtime:" + rspCommit.getQTime());
  

  } catch (SolrServerException | IOException e) {
  e.printStackTrace();
  }
  

  }
  

  public static void main(String args[]) throws IOException {
  SolrInsertTest test = new SolrInsertTest();
  

  //添加文档
  
         test.addDucument();
  

  // 删除文档
  //test.deleteById("200");
  test.deleteByQuery("name:user3");
  

  //更新文档
  test.updateDocuments(400, "name", "user新");
  

  // 查询文档
  
       test.queryDocuments();
  }   
  
}

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-425532-1-1.html 上篇帖子: Apache Solr 学习入门 (一) 下篇帖子: Solr - 搭建与调试
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表