Solr筆記(一)

來源:互聯網
上載者:User
簡介

Solr是一個獨立的企業級搜尋應用伺服器,它對外提供類似Web-service的API介面。

使用者可以通過HTTP的POST請求,向Solr伺服器提交一定格式的XML或者JSON檔案,Solr伺服器解析檔案之後,根據具體需求對索引庫執行增刪改操作

使用者可以通過HTTP的GET請求,向Solr伺服器發送搜尋請求,並得到XML/JSON格式的返回結果。

Solr是Apache下的一個頂級開源項目,採用java開發,基於Lucene。Solr可以獨立運行在Jetty(java開發的,輕量級的)、Tomcat等這些Servlet容器中。

Solr提供了比Lucene更為豐富的查詢語言,同時實現了可配置、可擴充,並對索引、搜尋效能進行了最佳化。
solr和Lucene區別 Lucene是一個開放原始碼的全文檢索索引引擎工具包,它不是一個完整的全文檢索索引應用。Lucene僅提供了完整的查詢引擎和索引引擎,目的是為軟體開發人員提供一個簡單易用的工具包,以方便的在目標系統中實現全文檢索索引的功能,或者以Lucene為基礎構建全文檢索索引應用。

Solr的目標是打造一款企業級的搜尋引擎系統,它是基於Lucene一個搜尋引擎伺服器,可以獨立運行,通過Solr可以非常快速的構建企業的搜尋引擎,通過Solr也可以高效的完成站內搜尋功能。

solr目錄詳解

bin:solr的運行指令碼 contrib:solr擴充jar包,用於增強solr的功能 dist:該目錄包含build過程中產生的war和jar檔案,以及相關的依賴檔案 docs:solr的API檔案

example:solr工程的例子目錄:

l example/solr:

       該目錄是一個標準的SolrHome,它包含一個預設的SolrCore

l example/multicore:

       該目錄包含了在Solr的multicore中設定的多個Core目錄。

l example/webapps:

    該目錄中包括一個solr.war,該war可作為solr的運行執行個體工程。

licenses:solr相關的一些許可資訊
solrHome和solrCore solrHome是Solr伺服器啟動並執行主目錄,該目錄中包括了多個SolrCore目錄 solrCore是collection1目錄,該目錄中包含搜尋和索引時需要的設定檔和資料檔案(比如索引庫檔案),每個solrCore都可以提供單獨的搜尋和索引服務

SolrCore目錄:

在solr解壓包下solr-4.10.3\example\solr檔案夾就是一個標準的SolrHome,只需要將它複製到指定的目錄下即可,該SolrHome中預設有個名稱為collection1的SolrCore。 配置SolrCore

其實就是配置SolrCore目錄下的conf/solrconfig.xml。

這個檔案是來配置SolrCore執行個體的相關運行時資訊。如果使用預設配置可以不用做任何修改。該設定檔中包含了不少標籤,但是我們經常使用的標籤有:lib標籤、datadir標籤、requestHandler標籤。 lib標籤 lib標籤可以配置擴充功能的一些jar,用以增強solr本身沒有的功能。

比如solr自身沒有『資料匯入索引庫』功能,如果需要使用,則首先要把這些jar複製到指定的目錄,然後通過該設定檔進行相關配置
datadir標籤 dataDir資料目錄data。data目錄用來存放索引檔案和tlog記錄檔。

requestHandler標籤 requestHandler要求處理常式,定義了索引和搜尋的訪問方式。

通過/update維護索引,可以完成索引的添加、修改、刪除操作。


通過/select搜尋索引。

設定搜尋參數完成搜尋,搜尋參數也可以設定一些預設值,如下:

<requestHandler name="/select" class="solr.SearchHandler">    <!-- 設定預設的參數值,可以在請求地址中修改這些參數-->    <lst name="defaults">        <str name="echoParams">explicit</str>        <int name="rows">10</int><!--顯示數量-->        <str name="wt">json</str><!--顯示格式-->        <str name="df">text</str><!--預設搜尋欄位-->    </lst></requestHandler>

找到solr.war,放到tomcat的webapps下,然後開啟設定檔web.xml,配置solr包裡面的SolrHome
    <env-entry>       <env-entry-name>solr/home</env-entry-name>       <env-entry-value>F:\solr</env-entry-value>       <env-entry-type>java.lang.String</env-entry-type>    </env-entry>

注意把ext擴充包也匯入,一共50個包。運行tomcat

管理介面功能介紹
Dashboard 儀錶盤,顯示了該Solr執行個體開始啟動啟動並執行時間、版本、系統資源等資訊
Logging
Solr作業記錄資訊
Cloud
SolrCloud,Solr雲(叢集),當使用Solr Colud模式運行時會顯示此菜單。 Core Admin Solr Core管理介面,在這裡可以添加SolrCore執行個體,不過瀏覽器端有bug,不推薦使用 java properties Solr在jvm運行環境中的屬性資訊,類路徑,檔案編碼啊啥的。 Thead Dump 顯示Solr Server中當前活躍線程資訊,同時也可以跟蹤線程運行棧資訊。 Core selector 選擇一個SolrCore進行詳細操作
Analysis 通過此介面可以測試索引分析器和搜尋分析器的執行情況 dataimport 可以定義資料匯入處理器,從關聯式資料庫將資料匯入到solr索引庫,預設是沒配置的,需要手動設定

Document

通過/update表示更新索引,solr預設根據id(唯一約束)域來更新Document的內容,如果根據id值搜尋不到id域則會執行添加操作,如果找到則更新。

 

通過此菜單可以建立索引、更新索引、刪除索引等操作,介面如下:
overwrite="true" : solr在做索引的時候,如果文檔已經存在,就用xml中的文檔進行替換
commitWithin="1000" : solr 在做索引的時候,每隔1000(1秒)毫秒,做一次文檔提交。為了方便測試也可以在Document中立即提交,</doc>後添加“<commit/>”

query
t通過/select執行搜尋索引,必須指定“q”查詢條件
Solrj
什麼是Solrj Solrj是訪問solr服務的java用戶端,提供索引和搜尋的API方法

public class CreateIndexTest {// solr伺服器的基礎URL路徑private String baseURL = "http://localhost:8080/solr/";// HttpSolrServer對象,該對象負責與遠端solr伺服器進行互動private HttpSolrServer solrServer = new HttpSolrServer(baseURL);@Testpublic void testCreateAndUpdateIndex() throws Exception {SolrInputDocument doc = new SolrInputDocument();doc.addField("id", "c001");doc.addField("content", "測試solrj添加操作02");// 調用SolrServer的API完成索引庫的增刪改查操作solrServer.add(doc);// 提交solrServer.commit();}@Testpublic void testDeleteIndex() throws Exception {// 根據ID刪除// solrServer.deleteById("c001");// 根據查詢對象刪除solrServer.deleteByQuery("id:change.me");// 刪除所有solrServer.deleteByQuery("*:*");// 提交solrServer.commit();}}


聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.