標籤:欄位 演算法 啟動 技術分享 運用 lis arch 基於 同名
概念: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、建立schemacore檔案建立完成後,建立其對應的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 corenamesolr狀態查看:solr status 參考部落格:http://blog.csdn.net/lxl631/article/details/52597134
Apache solr(一)