天天看點

使用SolrJ用戶端對Solr索引庫進行增删改查

一、簡介: solrJ是通路solr服務的java用戶端,提供索引和上搜尋的請求方法,solrJ通常嵌入在業務系統中,通過solrJ的API接口操作solr服務

二、jar包

<!-- solr用戶端 -->
  <dependency>
   <groupId>org.apache.solr</groupId>
   <artifactId>solr-solrj</artifactId>
   <version>4.10.3</version>
  </dependency>
           

三、添加資料:

@Test
	public void addSolr() throws SolrServerException, IOException {
		//建立一個SolrServer對象,建立一個連接配接
		SolrServer solrServer = new HttpSolrServer("http://192.168.25.131:8080/solr");
		//建立一個文檔對象SolrInputDocument
		SolrInputDocument document = new SolrInputDocument();
		//向文檔對象中添加域,文檔中必須包含一個id域,所有的域的名稱必須在schema.xml中定義
		document.addField("id", 1);
		document.addField("item_title", "我是中國人");
		document.addField("item_desc", "中華人民共和國萬歲!");
		//把文檔寫入索引庫
		solrServer.add(document);
		//送出
		solrServer.commit();
	}
           

四、更新資料: 更新就是添加,隻要id一緻資料不同,就是更新。 系統原理:庫會先根據id将資料删除,再添加新的資料

五、查詢資料:

@Test
	public void searchSolr() throws SolrServerException {
		//建立一個SolrServer對象,建立一個連接配接
		SolrServer solrServer = new HttpSolrServer("http://192.168.25.131:8080/solr");
		//建立一個SolrQuery對象
		SolrQuery query = new SolrQuery();
		//設定查詢條件
		query.setQuery("*:*");
		/*
		query.setStart(0); //設定分頁:起始頁
		query.setRows(10); //設定分頁:頁面大小
		query.set("df", "item_title"); //設定預設搜尋域,若不指定預設搜尋域,預設從text中找
		query.setHighlight(true); //開啟高亮
		query.addHighlightField("item_title"); //設定高亮的域
		query.setHighlightSimplePre("<em>"); //設定高亮的字首
		query.setHighlightSimplePost("</em>"); //設定高亮的字尾
		*/
		//執行查詢
		QueryResponse queryResponse = solrServer.query(query);
		//取文檔清單,取查詢結果總記錄數
		SolrDocumentList results = queryResponse.getResults();
		System.out.println("總記錄數:"+results.getNumFound());
		//周遊文檔清單,從中取出域的内容
		for (SolrDocument solrDocument : results) {
			System.out.println(solrDocument.get("item_title"));
		}
		
	}
           

六、删除資料:

@Test
	public void deleteSolr() throws SolrServerException, IOException {
		//建立一個SolrServer對象,建立一個連接配接
		SolrServer solrServer = new HttpSolrServer("http://192.168.25.131:8080/solr");
		//删除
		solrServer.deleteById("1");
		//送出
		solrServer.commit();
		
	}
           

繼續閱讀