13719654321 发表于 2017-12-18 22:37:09

solr的安装与使用

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 (SolrServerExceptione) {
  // 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]
查看完整版本: solr的安装与使用