sphinx配置,中文分詞,PHP調(diào)用sphinx_第1頁
sphinx配置,中文分詞,PHP調(diào)用sphinx_第2頁
sphinx配置,中文分詞,PHP調(diào)用sphinx_第3頁
sphinx配置,中文分詞,PHP調(diào)用sphinx_第4頁
sphinx配置,中文分詞,PHP調(diào)用sphinx_第5頁
已閱讀5頁,還剩36頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

1、大綱1.sphinx概述;2.sphinx的優(yōu)缺點;3.sphinx分布圖;4.Sphinx以及coreseek中文分詞安裝和配置;5.使用PHP使用sphinx;1.sphinx概述Sphinx 是SQL Phrase Index(查詢詞組索引)的縮寫,Sphinx是一個基于SQL的全文檢索引擎,可以結(jié)合MySQL,PostgreSQL,XML等 做全文搜索,它提供的API接口包括:PHP,Python,Perl,Ruby,java等,同時為MySQL也設計了一個存儲引擎插件(SphinxSE)。它是一個分布式的全文檢索系統(tǒng)。2.sphinx的優(yōu)缺點u優(yōu)點:優(yōu)點: 高速的建立索引(在當代CP

2、U上,可達到10 MB/秒); 高性能的搜索(在2 4GB 的文本數(shù)據(jù)上,平均每次檢索響應時間小于0.1秒); 可處理海量數(shù)據(jù)(目前已知可以處理超過100 GB的文本數(shù)據(jù), 在單一CPU的系統(tǒng)上可處理100 M 文檔); 提供了優(yōu)秀的相關度算法,基于短語相似度和統(tǒng)計BM2的復合Ranking方法; 支持分布式搜索; 提供文檔片段(摘要以及高亮)生成功能; 可作為MySQL的存儲引擎提供搜索服務; 支持布爾、短語、詞語相似度等多種檢索模式; 文檔支持多個全文檢索字段(最大不超過32個);u缺點:缺點: 必須要有主鍵 主鍵必須為整型 不負責數(shù)據(jù)存儲 (計算) 配置不靈活3.sphinx分布圖相當于

3、數(shù)據(jù)庫的中間層,緩解數(shù)據(jù)庫的壓力相當于數(shù)據(jù)庫的中間層,緩解數(shù)據(jù)庫的壓力4.sphinx的安裝和配置Sphinx安裝安裝1.上傳軟件包sphinx-0.9.9.tar.gz;2.解壓:tar-zxvfsphinx-0.9.9.tar.gz3.編譯安裝:進入到sphinx的源碼文件夾里,運行下列命令就可以安裝sphinx了:cd /lamp/sphinx-0.9.9./configure -prefix=/usr/local/sphinx -with-mysql=/usr/local/mysqlmake & make install4.安裝完成之后,導入一些數(shù)據(jù);安裝完成之后,導入一些數(shù)據(jù)

4、;我們用安裝mysql自帶的test庫進行測試;運行/usr/local/sphinx/etc/目錄下的example.sql腳本,把數(shù)據(jù)導到數(shù)據(jù)庫中:/usr/local/mysql/bin/mysql -uroot -p* use test; /進入test庫mysql show tables; /查看表Test庫中documents表是自動導進來的;我們插入幾條中文進去;mysql insert into documents values(null,1,10,now(),方研矩形,方研矩行科技有限公司);6.配置配置sphinx.conf配置文件配置文件;進入到sphinx的etc目錄找

5、到配置文件cd /usr/local/sphinx/etc 我們需要備份一下配置文件,防止改錯不好處理。cp sphinx.conf.dist sphinx.conf 進入配置文件。vim sphinx.confSphinx基本配置數(shù)據(jù)源 src是名字可以自己指定(意思就是說數(shù)據(jù)從哪里來得)source src1 13行 type = mysql # 數(shù)據(jù)庫類型 sql_host = localhost # MySQL主機IP sql_user = sphinxuser # MySQL用戶名 sql_pass = sphinxpass # MySQL密碼 sql_db = sphinx # M

6、ySQL數(shù)據(jù)庫 sql_port = 3306 # MySQL端口 sql_sock = /tmp/mysql.sock # 如果是linux下需要開啟,指定sock文件。35行sql_query_pre = SET NAMES UTF8 # MySQL檢索編碼 73行sql_query_pre = SET SESSION query_cache_type=OFF #關閉緩存 74行sql_query= # 獲取數(shù)據(jù)的SQL語句 79行 (默認就可以)SELECT id, group_id, UNIX_TIMESTAMP(date_added) AS date_added, title, co

7、ntent FROM documentssql_attr_uint = group_id# 無符號整型107行 根據(jù)79行指定的字段填寫sql_attr_timestamp = date_added # 時間類型 131行 根據(jù)79行指定的字段填寫# 用于命令界面端(CLI)調(diào)用的測試(一般來說不需要) 187行sql_query_info= SELECT * FROM documents WHERE id=$id主索引index text1 271行 source = src1 # 索引源聲明 (根據(jù)我們指定的主索引源的名字)charset_type = utf-8 # 數(shù)據(jù)編碼(設置成ut

8、f8) 34行charset_table = # 上面指定了utf-8,這里需要開啟。 353行index testlstemmed:test1增量索引 (先關閉掉#號注釋)481行index distl 分布式也注釋掉(暫時可以關閉,#號注釋)492行索引器設置indexer 529行 mem_limit = 256M # 內(nèi)存大小限制 默認是 32M, 推薦為 256M 其他用默認即可 sphinx服務進程searchd的相關配置 565行searchd 全部用默認的就可以了。如果是本地測試,使用默認就可以,如果是多個服務器測試需要指定監(jiān)聽的ip即可。Sphinx配置文件結(jié)束 創(chuàng)建索引 -

9、c 指定配置文件 -all 對所有索引重新編制索引。 -rotate 用于輪換索引,主要是再不停止服務的時候,增加索引。 -buildstops -buildfreqs 要一起使用, 例:indexer myindex -buildstops text.txt 1000 -buildfreqs 會在當前目錄下生成,一個名字叫text.txt,最多包含1000個詞的詞表。 -merge 合并索引/usr/local/sphinx/bin/indexer -c /usr/local/sphinx/etc/sphinx.conf -all創(chuàng)建索引如果報了一個這樣的錯誤:/usr/local/sphi

10、nx/bin/indexer: error while loading shared libraries: libmysqlclient.so.18: cannot open shared object file: No such file or directory可以用下面方法解決:cp /usr/local/mysql/lib/libmysqlclient.so.18 /usr/lib/libmysqlclient.so.18再次運行創(chuàng)建索引命令就能完成索引的創(chuàng)建了/usr/local/sphinx/bin/indexer -all出現(xiàn)這樣的提示就表示創(chuàng)建成功測試創(chuàng)建的索引 檢查數(shù)據(jù)命令:

11、search (詳細方法會調(diào)用API使用) /usr/local/sphinx/bin/search -c test(test關鍵字)可以看到將數(shù)據(jù)中含有test關鍵字的數(shù)據(jù)查詢出來,包括文檔id,權重,屬性值等我們搜索下中文看下我們搜索下中文看下/usr/local/sphinx/bin/search -c /usr/local/sphinx/etc/sphinx.conf 方研矩行Coreseek cd /lamp tar -zxvf coreseek-3.2.14.tar.gz 進入到mmseg所在文件夾,先安裝中文分詞mmseg。 cd /lamp/coreseek-3.2.14/mm

12、seg-3.2.14/ ./bootstrap /輸入的warming信息可以忽略,error需要解決 ./configure -prefix=/usr/local/mmseg Make & make install 然后運行mmseg,就能輸入安裝成功的信息了: /usr/local/mmseg/bin/mmseg 出現(xiàn)這個就安裝成功啦接下來,我們要把接下來,我們要把Sphinx和和mmseg結(jié)合起來。結(jié)合起來。(1)檢測安裝 進入coreseek目錄,進行安裝。 cd /lamp/coreseek-3.2.14/csft-3.2.14/ ./configure -prefix=/u

13、sr/local/coreseek -with-mysql=/usr/local/mysql -with-mmseg=/usr/local/mmseg -with-mmseg-includes=/usr/local/mmseg/include/mmseg/ -with-mmseg-libs=/usr/local/mmseg/lib/ make & make install(2)配置帶有中文分詞的配置帶有中文分詞的sphinx配置文件配置文件 配置文件和上面的步驟一樣,只不過是在coreseek中,有幾個地方需要注意。 注意:coreseek中得配置文件也是sphinx.conf,而不是

14、coreseek.conf。 cd /usr/local/coreseek/etc cp sphinx.conf.dist sphinx.conf vim sphinx.confsource src1 13行 type = mysql # 數(shù)據(jù)庫類型sql_host = localhost #MySQL主機IPsql_user = sphinxuser #MySQL用戶名sql_pass = sphinxpass #MySQL密碼sql_db = sphinx #MySQL數(shù)據(jù)庫sql_port = 3306 # MySQL端口sql_sock = /tmp/mysql.sock # 如果是l

15、inux下需要開啟,指定sock文件。35行sql_query_pre = SET NAMES UTF8 # MySQL檢索編碼 73行sql_query_pre = SET SESSION query_cache_type=OFF #關閉緩存 74行sql_query= # 獲取數(shù)據(jù)的SQL語句 79行 (默認就可以)SELECT id, group_id, UNIX_TIMESTAMP(date_added) AS date_added, title, contentFROM documentssql_attr_uint = group_id# 無符號整型107行 根據(jù)79行指定的字段填寫

16、sql_attr_timestamp = date_added # 時間類型 131行 根據(jù)79行指定的字段填寫# 用于命令界面端(CLI)調(diào)用的測試(一般來說不需要) 187行sql_query_info= SELECT * FROM documents WHERE id=$idxmlpipe settings 211行 這個是XML類型的,直接過去。source srclthrottled:srcl 繼承索引源。 index test1 (只有索引這個里面的值要修改) 需要注釋的地方:#stopwords = G:datastopwords.txt 315行#wordforms = G:d

17、atawordforms.txt 321行#exceptions = /data/exceptions.txt 330行#charset_type = sbcs 340行添加下面這兩行,意思是把中文分詞加入到配置文件中。charset_type = zh_cn.utf-8charset_dictpath= /usr/local/mmseg/etc/ #你安裝mmseg的目錄#charset_table = # 這里需要關閉 353行(3)生成索引并測試生成索引并測試創(chuàng)建索引/usr/local/coreseek/bin/indexer c /usr/local/coreseek/etc/sph

18、inx.conf all再次測試搜索中文/usr/local/coreseek/bin/search -c /usr/local/coreseek/etc/sphinx.conf 方研矩行出現(xiàn)如下結(jié)果表示我們在linux下Sphinx,中文分詞已經(jīng)安裝完成了,并測試成功我們可以給/usr/local/coreseek/etc/sphinx.conf這個sphinx.conf重命名為csft.conf,那么上面的創(chuàng)建索引的語句就變?yōu)椋?usr/local/coreseek/bin/indexer all查看索引是否創(chuàng)建成功的語句就變?yōu)椋?usr/local/coreseek/bin/search

19、 方研矩行到此,sphinx中文分詞已經(jīng)配置成功啦配置增量索引前,要先創(chuàng)建一個計數(shù)表配置增量索引前,要先創(chuàng)建一個計數(shù)表sph_counter,記錄將文檔集分為兩個部分的文記錄將文檔集分為兩個部分的文檔檔ID,每次重新構(gòu)建主索引是,更新這個表每次重新構(gòu)建主索引是,更新這個表 /usr/local/mysql/bin/mysql -uroot p123456Use test ;CREATE TABLE sph_counter( counter_id INTEGER PRIMARY KEY NOT NULL, max_doc_id INTEGER NOT NULL);配置增量索引:配置增量索引:主數(shù)

20、據(jù)源里面:我們需要把欲查詢語句改成下面的語句: 13行Source src1 把sql_query_pre的改成下面的語句 79行sql_query_pre = REPLACE INTO sph_counter SELECT 1, MAX(id) FROM documentssql_query= SELECT id, group_id,UNIX_TIMESTAMP(date_added) AS date_added, title, content FROM documents WHERE id( SELECT max_doc_id FROM sph_counter WHERE counter_

21、id=1 )主索引:281行 把名字該成想對應的。Index test1 source = src1 286行path = /usr/local/coreseek/var/data/test1290行 繼承索引(也是曾亮索引) 494行index delta:test1source= deltapath= /usr/local/coreseek/var/data/delta到此,增量索引已經(jīng)配置成功啦建立增量索引:建立增量索引: cd /usr/local/coreseek/bin/./indexer delta(增量索引)建立增量索引如果想重新建立索引,不能再用./indexer all改用

22、./indexer test1(主索引)自動實時跟新索引自動實時跟新索引我們需要建立兩個腳本,還要用到計劃任務。建立一個主索引和增量索引的腳本Main.sh delta.sh (可以自己命名)在增量索引中寫下 delta.sh/usr/local/coreseek/bin/indexer delta -rotate /usr/local/coreseek/var/log/delta.log主索引中寫下:main.sh 意思就是合并索引/usr/local/coreseek/bin/indexer -merge test1 delta -rotate /usr/local/coreseek/va

23、r/log/main.log/usr/local/mysql/bin/mysql -uroot -pkkk test -e “replace into sph_counter select 1,max(id) from documents“(更新計數(shù)器表)最后,我們需要腳本能夠自動運行,以實現(xiàn),增量索引每10分鐘重新建立,和主索引只在午夜2:30時重新建立。腳本寫好了,我們需要建立計劃任務crontab -e 來編輯 crontab文件,如果之前沒有使用,會是一個空的文件。寫下下面兩條語句*/10 * * * * /usr/local/coreseek/etc/delta.sh30 2 * *

24、 * /usr/local/coreseek/etc/main.sh第一條是表示每10分鐘運行。第二條是表示 每天的 凌晨2:30分運行(查看系統(tǒng)時間)如果提示權限問題,給腳本可執(zhí)行的權限 chmod 755 保存好后:重新啟動服務service crond stop service crond start5.使用PHP使用sphinx1.啟動服務啟動服務/usr/local/coreseek/bin/searchd2.需要到需要到coreseek解壓包中找到解壓包中找到sphinxapi.php文件放到程文件放到程序目錄下。序目錄下。cp /root/lamp/coreseek-3.2.14/csft-3.2.14/api/sphinxapi.php /hom

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論