Solr學習筆記(一)

最近準備爲一個產品作一個站內的搜索引擎,是一個java產品。因爲原來作過Lucene.net,因此天然而然的就想到了使用Lucene。在複習Lucene的過程當中發現了Solr這個和Lucene綁定在一塊兒的Apache的子項目,發現這個搜索服務器正是咱們想要的。原來咱們作Lucene,會把索引和搜索都放在同一個網站下,也就是在網站啓動的時候,或定時在網站應用程序中進行Lucene的初始化和索引,並使用Lucene搜索API提供搜索服務。這個過程,應用網站既提供了搜索內容的提供者(從數據庫或文件提取數據給Lucene索引),也是搜索內容的索引者,又是用戶搜索服務的結果提供者。這很明顯是不夠理想的,特別是在分佈式集羣部署環境下。Solr的出現,正好幫助咱們解決了這個問題。單一的搜索服務被獨立出來,提供數據的索引和搜索,而且這個搜索服務能夠方便的爲多個應用進行服務。餘下的就是把搜索內容提供者也分離出來,造成一個或多個獨立的服務。這樣服務於服務之間的耦合就下降了,業務和功能的變化,均可以在某一個角色服務中處理,而不須要影響其餘的服務。最重要的,Solr能夠提供基於Http和XML的Web API,使它能夠跨平臺和語言進行服務。集羣和分佈式部署也變的更容易、風險更低,而且會更有針對性。新的搜索架構就會變成下圖這樣:java

image

 

solr的安裝

首先咱們先來安裝solr。安裝solr比較簡單。個人安裝是在windows環境下進行,tomcat7 + solr 10.1。web

1. 在網上下載solr的安裝包,解壓縮文件。數據庫

2. 找到solr.war文件,把文件複製到tomcat的webapps文件夾下,在這以前若是你的tomcat是運行着的,則先要中止運行。windows

3. 把example\resources\log4j.properties 複製到 $CATALINA_HOME/lib/ 目錄下。瀏覽器

4. 而後把下載包中的solr-4.x.0/example/solr 文件夾複製到你但願存儲的本地文件夾D:\solr下,這個文件夾會做爲solr索引文件的存放目錄:$SOLR_HOME。tomcat

5. 運行tomcat。把下載的文件example\lib\ext目錄下的全部jar包複製到tomcat的webapps目錄下的solr\WEB-INF\lib文件夾下。服務器

6. 配置$SOLR_HOME。仍是在tomcat的webapps\solr\WEB-INF目錄下,找到web.xml文件,放開<env-entry>節點,配置上$SOLR_HOME,以下:架構

    <env-entry>
       <env-entry-name>solr/home</env-entry-name>
       <env-entry-value>d:\solr</env-entry-value>
       <env-entry-type>java.lang.String</env-entry-type>
    </env-entry>

完成上述步驟之後,從新啓動tomcat,訪問http://localhost:8080/solr/確認是否配置正常。app

image

 

添加Document

solr安裝好之後,咱們須要測試solr是否能夠正確運行。solr的搜索是基於文檔的,沒有文檔,solr什麼也搜索不到。因此咱們如今就要嘗試着添加文檔。在solr的下載包裏面有一些用於測試的文檔,在example\exampledocs文件夾下。另外在這個文件夾下還有一個基於java命令行的測試工具post.jar,咱們將使用這些文檔和工具來做爲測試。webapp

使用命令 java -Durl=http://localhost:8080/solr/update -jar post.jar *.xml 把文件夾下全部的xml文件上傳到solr上去,並索引。這樣添加Document的工做就算完成。

image

 

查找Document

通過上一步的添加,14個document已經被索引到solr服務器中,咱們就能夠進行查詢了。在瀏覽器中輸入http://localhost:8080/solr/select?q=video,服務器將會返回一個xml文檔,<result>標籤下有多個<doc>標籤,每個<doc>就是被搜索到的和查詢參數有關的document。以下圖:

image

 

至此,solr已經安裝成功,下一篇將介紹solr的相關基本概念。

相關文章
相關標籤/搜索