Solr我還是個菜鳥,寫這篇文章只是記錄最近一段時間學習Solr的心得。
Solr是什麼?
最近我學Solr的時候,一直看到一句話,Solr 是一個可供企業使用的、基於Lucene 的開箱即用的搜尋伺服器。當時想了很久沒看懂這句話是什麼意思,什麼是搜尋伺服器?當接觸的深了才發現,所謂的搜尋伺服器,就是能夠在伺服器(Tomcat,Jetty)中運行的搜尋程式的一個工程。
Solr能做什麼?
了解過Lucene的人都知道,Lucene在做兩件事情,索引管理與搜索,Solr同樣也不例外,做的也是這兩件事情,只不過使之更加簡單化。
如果對Lucene還不太了解,推薦看一下覺先的部落格:http://www.cnblogs.com/forfuture1978/category/300665.html,這篇部落格對於我剛接觸全文檢索的時候幫助很大,另外推薦一本書,英文版Lucene In Action,中文版Lucene實戰。
下面,切入正題,既然Solr是一個搜尋伺服器,我們當然需要它能夠在我們的Eclipse裡進行管理,我就寫一下我的一些心得吧。
在Eclipse中運行Solr
1.下載solr完整包,我用的是Solr 3.6.1;
2.在Eclipse中新建一個Dynamic Web project項目,我的命名是solr,大家也可以這樣,如果不一樣,在你訪問的時候注意一下就好了。
3.刪除新建專案中的WebContent下的所有內容,將下載的Solr完整包中的dist目錄下的apache-solr-3.6.1.war解壓,將裡面的所有內容複製到WebContent下,複製完成之後會有紅叉,別管了,就當沒看見。
4.指定solrHome,solrHome是存放solr核心設定檔與索引的地方。
開啟WEB-INF/web.xml文件,新增以下節點:
複製代碼代碼如下:
<env-entry>
<env-entry-name>solr/home</env-entry-name>
<env-entry-value>E:/solr</env-entry-value>
<env-entry-type>java.lang.String</env-entry-type>
</env-entry>
其中env-entry-name必須是solr/home,env-entry-value節點是你要放置solr設定檔的地方。
5.新增solr設定檔<BR>這裡有兩種方法,自己建立或是拷貝下載完整包中的核心設定檔。
第一種方法:拷貝,進入下載包中的example/mutiCore目錄下,可以看到有core1,core2,將此資料夾以及下面的solr.xml檔案拷貝至solrHome。
第二種方法:(1).新建,進入solrHome,新建solr.xml文件,配置如下:
複製代碼代碼如下:
<?xml version="1.0" encoding="UTF-8" ?>
<solr persistent="false">
<cores adminPath="/admin/cores">
<core name="merchant" instanceDir="merchant" />
</cores>
</solr>
其中adminPath的檔案如程式碼所示,最好不要更改,core中name隨意,最好是有一定的實際意義的,instanceDir,這裡指定了該core的目錄,這裡配置了merchant,也就意味著是solrHome下的merchant目錄。
這裡解釋一下多核心配置,這裡範例我只存放了一個core,因為我們的產品只需要對著一個merchant進行全文檢索。如果有需要,比如說還需對coupon等文件檢索的話,就需要設定多核心。 example/muticore資料夾下給了多核心的範例,大家可以參考一下。
(2).新建merchant目錄(與設定中的instanceDir一致),然後在merchant下新建conf目錄,在conf里新建兩個xml文件,分別是schema.xml,solrconfig.xml,這兩個xml的設定會在下篇部落格中詳細講述,如果不知道如何配置,拷貝example/muticore/core1/conf裡面的兩個文件進來即可。
6.在Eclipse中啟動solr在servers視窗中new一個server,然後將剛剛新建的項目add進去;
修改端口,雙擊剛新建的伺服器,在port裡面修改HTTP/1.1的端口為8983,這裡可以自定義,最好不要和你的其他項目重複。然後保存;
啟動伺服器。
7.在瀏覽器中開啟solr管理面板<BR>開啟以下位址,http://localhost:8983/solr/,然後你就可以看到Admin merchant選項了,點選進入,就是剛剛設定的merchant core的管理面板。