1. 程式人生 > >Apache solr(一)

Apache solr(一)

cor val general 描述 src bsp 使用 blank 功能

概念:Apache Solr 是一個開源的搜索服務器。Solr 使用 Java 語言開發,主要基於 HTTP 和 Apache Lucene 實現。Apache Solr 中存儲的資源是以 Document 為對象進行存儲的。每個文檔由一系列的 Field 構成,每個 Field 表示資源的一個屬性。Solr 中的每個 Document 需要有能唯一標識其自身的屬性,默認情況下這個屬性的名字是 id,在 Schema 配置文件中使用:<uniqueKey>id</uniqueKey>進行描述。 Solr是一個高性能,采用Java5開發,基於Lucene
全文搜索服務器。Solr是一個獨立的企業級搜索應用服務器,目前很多企業運用solr開源服務。原理大致是文檔通過Http利用XML加到一個搜索集合中。查詢該集合也是通過 http收到一個XML/JSON響應來實現。它的主要特性包括:高效、靈活的緩存功能,垂直搜索功能,高亮顯示搜索結果,通過索引復制來提高可用性,提 供一套強大Data Schema來定義字段,類型和設置文本分析,提供基於Web的管理界面等。
solr的所有版本下載地址:http://archive.apache.org/dist/lucene/solr/ 安裝配置以及程序插入與查詢 1、啟動solr 命令行窗口進入安裝目錄的bin下,直接使用solr start啟動,不加參數默認使用8983端口
技術分享

2、訪問solr控制臺 地址:http://localhost:8983/solr 進入solr的控制臺。 solr的工作核心名詞為core,可以理解成數據庫的表。 每個core都有自己的schema,可對應理解為數據庫的字段。 控制臺如下圖所示。 當前是沒有core文件的,需要我們自己配置。 技術分享

3、配置core 配置我們自己的core。 在控制臺的左邊菜單中,選擇Core Admin,進入core新建頁面。 在點擊Add Core 保存之前, 先進入solr的安裝目錄的 server - solr 下 新建一個和core同名的文件夾,如: 進入E:\DevelopEnvironment\solr\solr-6.2.0\server\solr 新建 democore 。
文件夾建好後,進入solr目錄的 server\solr\configsets\basic_configs 下,拷貝conf文件夾到新建的文件夾下 如:進入E:\DevelopEnvironment\solr\solr-6.2.0\server\solr\configsets\basic_configs 拷貝conf文件夾到剛剛新建的democore 技術分享

完成這一步準備工作後,回到控制臺的Core Admin 錄入name和dir 點擊 Add Core 保存即可 技術分享

保存完成後,可看到該core: 技術分享

對應的文件夾內容也改變為: 技術分享

4、新建schema core文件創建完成後,創建其對應的schema。 進入該core的Schema 菜單 ,點擊Add Field ,在彈出的頁面中,錄入name和type,name代表字段的名稱,type為類型 ,類型選擇 text_general。 stored 意思為,將該字段的值進行存儲,用來以後索引的時候直接取出。 indexed 表示 將該字段進行索引。 技術分享 錄入完成後,點擊Add Field保存即可。 至此,core和schema都構建完成。接下來要向solr的這個core插入數據。 5、使用程序插入數據 新建Java項目,將solr的對應jar包拷貝到項目中。 使用到的jar包在 dist 文件夾下,主要包括 solrj這個jar包和solr-lib下的jar包,為了方便,直接全部拷貝過去即可。 如:E:\solr-6.5.1\dist E:\solr-6.5.1\dist\solrj-lib 以及運行程序插入程序
        HttpSolrClient.Builder builder = new HttpSolrClient.Builder("http://localhost:8983/solr/democore");         
        HttpSolrClient solrClient = builder.build();         
        SolrInputDocument document = new SolrInputDocument();        
        document.addField("id", System.currentTimeMillis() + "");        
        document.addField("title", "計算機科學與技術" + System.currentTimeMillis());         
        solrClient.add(document);         
        solrClient.commit();        
        solrClient.close();

  

技術分享

6、使用程序查詢數據 HttpSolrClient.Builder builder = new HttpSolrClient.Builder("http://localhost:8983/solr/democore"); HttpSolrClient solrClient = builder.build(); SolrQuery query = new SolrQuery(); query.set("q", "title:計算機科學與技術1495013922355"); QueryResponse response = solrClient.query(query); SolrDocumentList list = response.getResults(); solrClient.commit(); System.out.println("匹配數量:"+list.getNumFound()); Iterator itr = list.iterator(); while (itr.hasNext()) { SolrDocument solrDocument = (SolrDocument) itr.next(); Object id = solrDocument.getFieldValue("id"); System.out.println(id.toString()); Object title = solrDocument.getFieldValue("title"); System.out.println(title.toString()); } 技術分享 技術分享

至此,全部完成。上述只是最基本的使用配置,對於中文的分詞還是停留在最原始的每個中文都當作一個詞匯的分詞算法上。這是比較暴力不可取的,需要替換對應的中文分詞器。 常用的幾個命令: 啟動:solr start 指定端口啟動:solr start -p 8984 停止solr:solr stop -p 8983 刪除指定的core文件:solr delete -c corename 創建core:solr create -c corename solr狀態查看:solr status 參考博客:http://blog.csdn.net/lxl631/article/details/52597134

Apache solr(一)