標籤:crm synonym ima php ide clu solr 資料 sof
簡介:
使用搜尋引擎,我們常規的資料查詢會快很多,還可以對關鍵詞進行中文分詞查詢,返回一些高亮,就和我們每天使用的搜尋服務一樣。我們這裡要使用Solr來進行我們的搜尋服務搭建。如果你使用php,很可能你會在網上查到Sphinx這個搜尋引擎,說是對php支援的很好,不要遲疑,遠離它,這個尼瑪官網都沒了,已經很多年沒更新了,中文更是沒辦法支援,功能更是非常有限。Solr一直在更新版本,用的人很多,官網http://lucene.apache.org/solr/,可以瞭解詳情。
Solr是一套java寫的獨立搜尋引擎,當然了,如果你不會java,沒有任何關係。廢話少說,我們先看怎麼在伺服器上安裝支援中文的Solr服務(本文是基於solr最新的6.5+版本)
1:安裝
首先看下伺服器的java環境配置
如果低於1.8,你就要先升級伺服器環境了,這個我就不描述了。
java環境配置完成之後,進入你想要安裝搜尋引擎的目錄,直接在官網下載solr的壓縮包wget https://mirrors.tuna.tsinghua.edu.cn/apache/lucene/solr/6.6.0/solr-6.6.0.tgz
(我前段時間在項目中用的時候還是6.5.1版本,現在已經6.6.0了,我這為了方便還使用6.5.1的案例描述)
下載完成之後解壓目錄是這樣子的
開啟example進入
solr-6.6.0/example/example-DIH/solr
會發現已經幾個demo樣子的目錄
[[email protected] solr]# ls
atom db mail solr solr.xml tika
[[email protected] solr]#
這裡需要說明一下,這個atom、db、mail等都是單獨的搜尋業務,大的項目裡可能會拆分出像這樣很多的搜尋業務類型。我們複製其中的一個,如mail整個目錄複寫到/usr/solr-6.6.0/server/solr,
這個目錄才是搜尋引擎最終的尋找目錄,所有搜尋的配置以及資料庫的索引等都在這個目錄下,mail 下的檔案結構是這樣的
[[email protected] mail]# ls
conf core.properties data
[[email protected] mail]#
2:啟動搜尋引擎
配置搜尋,只需要關注conf就可以了,開啟conf
[[email protected] conf]# ls
admin-extra.html clustering lang mapping-FoldToASCII.txt solrconfig.xml synonyms.txt
admin-extra.menu-bottom.html currency.xml mail-data-config.xml mapping-ISOLatin1Accent.txt spellings.txt update-script.js
admin-extra.menu-top.html elevate.xml managed-schema protwords.txt stopwords.txt xslt
[[email protected] conf]#
這時候應該就可以啟動一個空的搜尋服務了。
進入Solr的根目錄
[[email protected] bin]# ls
init.d install_solr_service.sh oom_solr.sh post solr solr.cmd solr.in.cmd solr.in.sh
[[email protected] bin]# ./solr start
WARNING: Starting Solr as the root user is a security risk and not considered best practice. Exiting.
Please consult the Reference Guide. To override this check, start with argument ‘-force‘
[[email protected] bin]# ./solr start -force
Waiting up to 180 seconds to see Solr running on port 8983 [|]
Started Solr server on port 8983 (pid=9757). Happy searching!
[[email protected] bin]#
這時候搜尋引擎已經啟動了,你可以在瀏覽器上開啟一個Solr的管理介面,地址框輸入
http://10.10.87.38:8983/solr/#/mail
注意左邊紅色框,下拉框裡會顯示上面你從example裡複製過來的項目,紅框裡有一個Query,就是搜尋關鍵詞用的,你可以在這裡邊測試你的搜尋服務是否正常,具體你可以自己點進去看一看就明白了,當然了,隨便複製過來的mail肯定是不能工作的,因為這個沒有串連到你自己的資料庫。
3:配置Solr
重新回到/solr-6.5.1/server/solr目錄下
我這複製了mail,然後改名字為crm,作為我自己的搜尋模組。下面就要配置這個crm了
進入
/solr-6.5.1/server/solr/crm/conf
[[email protected] conf]# ls
admin-extra.html clustering db-data-config.xml managed-schema protwords.txt stopwords.txt xslt
admin-extra.menu-bottom.html currency.xml elevate.xml mapping-FoldToASCII.txt solrconfig.xml synonyms.txt
admin-extra.menu-top.html dataimport.properties lang mapping-ISOLatin1Accent.txt spellings.txt update-script.js
[[email protected] conf]#
配置db-data-config.xml
這個是設定資料庫的,由於我這使用的mysql,然後要搜尋的只有一張表,所以配置就比較簡單了
你要搜尋很多表的話,就配置多個entity,(我這業務上沒這需求,咱們沒研究這塊)這個配置是讓solr對資料庫的欄位內容建立索引並儲存下來,搜尋的時候不再尋找資料庫,直接尋找索引返回結果
配置solrconfig.xml
這個是solr本身的配置,基本包含高亮顯示,返回欄位長短,查詢逾時設定等等,如果不做進階定製,這個檔案基本不用動,唯一要注意的是
<requestHandler name="/dataimport" class="solr.DataImportHandler">
<lst name="defaults">
<str name="config">db-data-config.xml</str>
</lst>
</requestHandler>
配置managed-schema
這個檔案很重要了,你可以在這裡配置你要搜尋的欄位的屬性,這裡面你會看到很多的field節點,看一下就會知道怎麼設定了。
4:配置中文搜尋
預設的是不支援中文搜尋的,我們還要添加中文的jar包
網上搜尋一下ik-analyzer,下載ik中文分詞包放在lib檔案夾下
[[email protected] solr]# cd crm/
[[email protected] crm]# ls
conf core.properties data lib
[[email protected] crm]# cd lib
[[email protected] lib]# ls
IKAnalyzer.cfg.xml ext.dic ik-analyzer-solr5-5.x.jar solr-analyzer-ik-5.1.0.jar
derby-10.9.1.0.jar hsqldb-1.8.0.10.jar mysql-connector-java-5.1.42.jar stopword.dic
[[email protected] lib]# pwd
/solr-6.5.1/server/solr/crm/lib
[[email protected] lib]#
分詞封裝好後要返回到managed-schema配置中文分詞的支援
在檔案末尾添加節點
然後在你想要搜尋中文的欄位裡添加ik分詞
5:完成Solr
儲存所有修改過的配置,然後重啟Solr服務。再從瀏覽器進入Solr管理介面。
首先我們要驗證一下中文分詞是否配置成功了(中文沒配置成功,我們的搜尋就沒有意義)
像這樣子的,你的中文分詞就配置成功了。
下面就可以測試你的搜尋了
看到這樣的介面就說明Solr的搜尋引擎服務配置完全成功了!
現在可以慶祝第一階段的勝利了。
接下來我們就要使用PHP來訪問搜尋結果,封裝介面提供給前端調用。^_^
PHP-從零開始使用Solr搜尋引擎服務(上)