PHP-從零開始使用Solr搜尋引擎服務(上)

來源:互聯網
上載者:User

標籤: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搜尋引擎服務(上)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.