1. 程式人生 > >Solr全文檢索伺服器

Solr全文檢索伺服器

 solr介紹

一、Solr它是一種開放原始碼的、基於 Lucene Java 的搜尋伺服器,易於加入到 Web 應用程式中。 二、Solr 提供了層面搜尋(就是統計)、命中醒目顯示並且支援多種輸出格式(包括XML/XSLT 和JSON等格式)。它易於安裝和配置,而且附帶了一個基於 HTTP 的 管理介面。Solr已經在眾多大型的網站中使用,較為成熟和穩定。 三、Solr 包裝並擴充套件了 Lucene,所以Solr的基本上沿用了Lucene的相關術語。更重要的是,Solr 建立的索引與 Lucene 搜尋引擎庫完全相容。 四、通過對Solr 進行適當的配置,某些情況下可能需要進行編碼,Solr 可以閱讀和使用構建到其他 Lucene 應用程式中的索引。 五、此外,很多 Lucene 工具(如Nutch、 Luke)也可以使用Solr 建立的索引。可以使用 Solr 的表現優異的基本搜尋功能,也可以對它進行擴充套件從而滿足企業的需要。

      準備工作:1、關閉防火牆,2、安裝jdk1.8環境。3、建立生產環境下的目錄/data/soft /,所有安裝包都放在/data/下進行操作,產生的環境都放在/data/soft下面。

1、檢視防火牆狀態:

firewall-cmd --state

 如果是開啟狀態那麼關閉掉就行了。

systemctl stop firewalld.service

 2、做之前的準備:jdk環境一定要是jdk1.8,centos7的話好像最低都是jdk1.8的,我的做實驗前查了一下是jdk1.8的,所以就不在繼續做jdk最新版本的了。

blob.png

在這裡不做說明,如果不會請參考我專門做的關於jdk環境的部落格.

3、建立安裝目錄

mkdir -p /data/soft

前三步做好後就直接開始做solr搜尋伺服器了。

正式開始:

1.下載solr7.2版本,解壓

wget http://mirrors.shuosc.org/apache/lucene/solr/7.2.1/solr-7.2.1.tgz
tar -xvf solr-7.2.1.tgz

 3.下載tomcat,解壓並測試tomcat是否異常,這步很重要,有的tomcat版本有衝突就會發生異常。

wget https://mirrors.cnnic.cn/apache/tomcat/tomcat-9/v9.0.6/bin/apache-tomcat-9.0.6.tar.gz
tar -xvf apache-tomcat-9.0.6.tar.gz
mv apache-tomcat-9.0.6 tomcat

對tomcat測試一下,看tomcat是否正常

 啟動tomcat:sh bin/startup.sh

blob.png

檢視埠是被監聽

blob.png

檢視服務是否啟動,生產環境會用這種方式檢視。

blob.png

檢視tomcat日誌:

 blob.pngblob.png

 生產環境最直接的檢查方式。直接curl命令檢視是否能夠獲取tomcat頁面。

blob.png

 開始部署配置solr

1.把solr-7.2.0/server/solr-webapp裡面的webapp拷貝到tomcat 的webapps下,重新命名為solr

cp -r solr-7.2.1/server/solr-webapp/webapp/ /data/soft/tomcat/webapps/
mv webapp/ solr

2.拷貝solr-7.2.1\server\lib\ext 下的jar包以及lib目錄下gmetric4j-1.0.7.jar,以metrics開頭的jar包拷貝到 tomcat\webapps\solr 專案的WEB-INF\lib下

cd solr-7.2.1/server/lib/ext/
cp * /data/soft/tomcat/webapps/solr/WEB-INF/lib/
cp gmetric4j-1.0.7.jar metrics-* /data/soft/tomcat/webapps/solr/WEB-INF/lib/

3.拷貝solr-7.2.0\server 下的solr資料夾到其它非中文目錄下,重新命名為solrhome,我是建立到了/data/soft下

 cd solr-7.2.1/server/
 cp -r solr /data/soft/solrhome

blob.png

4.修改/data/soft/tomcat/webapps/solr/WEB-INF\web.xml, 找到如下程式碼,藍色部分的,/put/your/solr/home/here 改為你自己的solrhome的路徑,我的是/data/soft/solrhome路徑。

   vim /data/soft/tomcat/webapps/solr/WEB-INF/web.xml,將註釋去掉,並將solrhome的目錄位置寫進去:

<!--
<env-entry>
<env-entry-name>solr/home</env-entry-name>
<env-entry-value>/put/your/solr/home/here</env-entry-value>
<env-entry-type>java.lang.String</env-entry-type>
</env-entry>
-->

如下圖:

 blob.png

5..拷貝solr7.2.1\server\resources下的log4j.properties到/data/soft/tomcat/webapps/solr/WEB-INF\classes,如果WEB-INF下沒有classes檔案那麼就建立一個classes資料夾

mkdir -p /data/soft/tomcat/webapps/solr/WEB-INF/classes
cp solr-7.2.1/server/resources/log4j.properties  /data/soft/tomcat/webapps/solr/WEB-INF/classes/

6.啟動tomcat,訪問需要完整路徑,我的是http://192.168.241.131:8080/solr/index.html#/

blob.png

 看下日誌,如果日誌有下面這個樣式就成功了。

blob.png

 在本機上curl一下,發現403,那麼估計頁面也是這樣,如下圖。

blob.png

blob.png

 7.注意:如果出現上圖403錯誤,編輯web.xml照片截圖中位置,找到如下程式碼,將其註釋即可。

blob.png

 加上註釋如下圖:

blob.png

 再次重新整理瀏覽器,會出現下圖的頁面。blob.png

配置solr的核心內容(core)

1.點選Core Admin,接著點選Add Core這項,點完之後會出現問題,但是會自動建立new-core目錄。

blob.png

2.報錯,提示缺少配置檔案:Error CREATEing SolrCore 'new_core': Unable to create core [new_core] Caused by: Can't find resource 'solrconfig.xml' in classpath or '/data/soft/solrhome/new_core'

解決方法:拷貝server/solr/configsets/_default/下的conf資料夾到solrhome/new_core資料夾下

cp -r solr-7.2.1/server/solr/configsets/_default/conf  /data/soft/solrhome/new_core/

3.點選Add Core,此時會顯示新增成功

blob.png

 4、配置中文分析器

1.拷貝dist資料夾裡的solr-dataimporthandler-7.2.0.jar

cp  solr-7.2.1/dist/solr-dataimporthandler-7.2.1.jar /data/soft/tomcat/webapps/solr/WEB-INF/lib/

2.拷貝lucene-libs資料夾裡的中文分析器的jar包

cp  solr-7.2.1/contrib//analysis-extras/lucene-libs/* /data/soft/tomcat/webapps/solr/WEB-INF/lib/
 vim solrhome/new_core/conf/managed-schema

<!-- ChineseAnalyzer -->
<fieldType name="text_ik" class="solr.TextField" positionIncrementGap="100">
<analyzer type="index">
<tokenizer class="org.apache.lucene.analysis.cn.smart.HMMChineseTokenizerFactory"/>
</analyzer>
<analyzer type="query">
<tokenizer class="org.apache.lucene.analysis.cn.smart.HMMChineseTokenizerFactory"/>
</analyzer>
</fieldType>

如下圖:

blob.png

4.自定義搜尋業務域

<field name="item_title" type="text_ik" indexed="true" stored="true"/>
<field name="item_sell_point" type="text_ik" indexed="true" stored="true"/>
<field name="item_price" type="plong" indexed="true" stored="true"/>
<field name="item_image" type="string" indexed="false" stored="true" />
<field name="item_category_name" type="string" indexed="true" stored="true" />
<field name="item_desc" type="text_ik" indexed="true" stored="false" />
<field name="item_keywords" type="text_ik" indexed="true" stored="false" multiValued="true"/>
<copyField source="item_title" dest="item_keywords"/>
<copyField source="item_sell_point" dest="item_keywords"/>
<copyField source="item_category_name" dest="item_keywords"/>
<copyField source="item_desc" dest="item_keywords"/>

如下圖:

blob.png

5.重啟tomcat,就能發現自定義域已經出現

blob.png

6.測試分詞效果

blob.png

 好了,到此為止,solr就告一段落,我們在部署的時候,心一定要細,有的地方千萬仔細,進過這兩天的熟悉給公司的阿里雲伺服器做這個,借籤網路各位大神的手筆,寫的不足之處,請大家多多關照。