Solr_全文检索引擎系统
Solr介紹:
Solr 是Apache下的一個頂級開源項目,采用Java開發,它是基于Lucene的全文搜索服務。Solr可以獨立運行在Jetty、Tomcat等這些Servlet容器中。
?
Solr的作用:
solr是一個現成的全文檢索引擎系統, 放入tomcat下可以獨立運行, 對外通過http協議提供全文檢索服務(就是對索引和文檔的增刪改查服務), 在代碼中可以通過solrJ(solr的客戶端的jar包)來調用solr服務。
?
Lucene和solr的區別:
lucene是一個全文檢索引擎工具包, 就是一堆jar包, 它放入tomcat下不能獨立運行, 但是我們可以使用lucene來構建全文檢索引擎系統;
solr底層是用lucene來開發的一個全文檢索引擎系統, 放入tomcat下就可以獨立運行, 對外通過http的形式,提供全文檢索服務(索引和文檔的增刪改查服務)。
?
在Tomcat容器中部署solr工程的步驟:
1、下載solr壓縮包,下載地址:http://archive.apache.org/dist/lucene/solr/(我這里使用的是solr-4.10.3);
2、準備好一個干凈的Tomcat容器,并配置好JDK;
3、找到solr解壓后的目錄,將solr-4.10.3\example\webapps目錄下的solr.war包放進Tomcat容器中運行,直接運行的目的是解壓該war包,解壓好之后關閉Tomcat容器并刪除war包(必須要刪除war包,否則再次運行時就覆蓋了以前配置好的solr服務),開始部署solr服務;
4、找到solr解壓后的目錄,將solr-4.10.3\example\lib\ext目錄下的所有jar包復制到Tomcat容器下的solr項目中的WEB-INF/lib目錄下;
5、為solr服務準備家目錄,找打solr解壓后的目錄,將solr-4.10.3\example目錄下的有一個名稱為solr的目錄直接拷貝到硬盤根目錄下,并且命名為solrHome(一般推薦這樣做);
6、開始配置solr服務,找到Tomcat容器中部署的solr項目中的WEB-INF/web.xml文件,進行配置,首先打開<env-entry>標簽,并且將剛剛拷貝好的solr的家目錄的路徑配置進去。
?
<env-entry><env-entry-name>solr/home</env-entry-name><env-entry-value>G:\solrHome</env-entry-value><env-entry-type>java.lang.String</env-entry-type></env-entry>
?
7、啟動Tomcat容器,并通過http://127.0.0.1:8080/solr地址訪問即可,如果看到以下界面則配置成功。
?
8、 solr服務配置成功之后,就會默認有一個collection1的實例,如果需要的話也可以配置多個,將solrHome目錄下的collection1目錄拷貝多個并將每個目錄下的core.properties配置文件中修改一下即可,記得重啟Tomcat容器。
?
?
通過SolrJ操作并訪問solr服務中的數據:
什么是solrj?
solrj是訪問solr服務的Java客戶端,提供索引和搜索的請求方法。
?
?
創建工程,并引入solrj所需的jar包:
?
需求一:向solr服務中的collection1實例中添加數據?
1 //向solr服務器中的collection1實例中添加數據 2 @Test 3 public void add() throws Exception{ 4 //1、創建與solr服務器的連接 5 /* 6 * http://localhost:8080/solr默認連接的是collection1實例 7 * 如果想連接其他的實例,如collection2、collection3則在連接時必須指定:http://localhost:8080/solr/實例名稱 8 */ 9 SolrServer server = new HttpSolrServer("http://localhost:8080/solr"); 10 11 //2、創建solr的文檔對象并添加數據 12 SolrInputDocument document = new SolrInputDocument(); 13 document.addField("id", "003"); 14 document.addField("title", "solr"); 15 16 //3、將文檔對象添加到solr服務器 17 server.add(document); 18 19 //4、提交 20 server.commit(); 21 }
需求二:修改solr服務中collection3實例中的數據?
1 //修改solr服務器上collection3實例中的數據 2 @Test 3 public void update() throws Exception{ 4 //1、連接solr服務器上collection3實例中的數據 5 SolrServer server = new HttpSolrServer("http://localhost:8080/solr/collection3"); 6 //2、創建solr的文檔對象并將數據修改 7 SolrInputDocument document = new SolrInputDocument(); 8 document.addField("id", "001"); 9 document.addField("title", "博學谷"); 10 //3、將文檔對象添加到solr服務器 11 server.add(document); 12 //4、提交 13 server.commit(); 14 }
需求三:對solr服務中的數據進行刪除操作,根據id刪除、刪除所有數據?
1 //刪除solr服務器上collection2實例中的指定數據: 2 @Test 3 public void delete() throws Exception{ 4 //1、連接solr服務器 5 SolrServer server = new HttpSolrServer("http://localhost:8080/solr/collection2"); 6 //2、根據id刪除數據 7 server.deleteById("002"); 8 //3、提交 9 server.commit(); 10 } 11 12 //刪除solr服務器上collection1實例中的所有數據: 13 @Test 14 public void deleteAll() throws Exception{ 15 //1、連接solr服務器 16 SolrServer server = new HttpSolrServer("http://localhost:8080/solr/collection1"); 17 //2、刪除指定實例下的所有數據 18 server.deleteByQuery("*:*"); 19 //3、提交 20 server.commit(); 21 }
需求四:檢索solr服務中collection3實例中的全部數據?
1 //查詢solr服務器上collection3實例中所有的數據: 2 @Test 3 public void findAll() throws Exception{ 4 //1、連接solr服務器 5 SolrServer server = new HttpSolrServer("http://localhost:8080/solr/collection3"); 6 //2、創建查詢對象 7 SolrQuery query = new SolrQuery(); 8 //3、給查詢對象中設置查詢條件 9 query.setQuery("*:*"); 10 //4、查詢并獲取響應 11 QueryResponse response = server.query(query); 12 //5、從響應中獲得結果集 13 SolrDocumentList results = response.getResults(); 14 //6、處理結果集 15 //輸出結果集的總查詢條數 16 System.out.println(results.getNumFound()); 17 for (SolrDocument solrDocument : results) { 18 System.out.println("id*************"+solrDocument.get("id")); 19 System.out.println("title**********"+solrDocument.get("title")); 20 System.out.println("==========================================="); 21 } 22 }
?
轉載于:https://www.cnblogs.com/1315925303zxz/p/6246458.html
總結
以上是生活随笔為你收集整理的Solr_全文检索引擎系统的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: OCR
- 下一篇: 你是前世未知的心跳是什么歌呢