版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
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也設(shè)計了一個存儲引擎插件(SphinxSE)。它是一個分布式的全文檢索系統(tǒng)。2.sphinx的優(yōu)缺點u優(yōu)點:優(yōu)點: 高速的建立索引(在當(dāng)代CP
2、U上,可達(dá)到10 MB/秒); 高性能的搜索(在2 4GB 的文本數(shù)據(jù)上,平均每次檢索響應(yīng)時間小于0.1秒); 可處理海量數(shù)據(jù)(目前已知可以處理超過100 GB的文本數(shù)據(jù), 在單一CPU的系統(tǒng)上可處理100 M 文檔); 提供了優(yōu)秀的相關(guān)度算法,基于短語相似度和統(tǒng)計BM2的復(fù)合Ranking方法; 支持分布式搜索; 提供文檔片段(摘要以及高亮)生成功能; 可作為MySQL的存儲引擎提供搜索服務(wù); 支持布爾、短語、詞語相似度等多種檢索模式; 文檔支持多個全文檢索字段(最大不超過32個);u缺點:缺點: 必須要有主鍵 主鍵必須為整型 不負(fù)責(zé)數(shù)據(jù)存儲 (計算) 配置不靈活3.sphinx分布圖相當(dāng)于
3、數(shù)據(jù)庫的中間層,緩解數(shù)據(jù)庫的壓力相當(dāng)于數(shù)據(jù)庫的中間層,緩解數(shù)據(jù)庫的壓力4.sphinx的安裝和配置Sphinx安裝安裝1.上傳軟件包sphinx-0.9.9.tar.gz;2.解壓:tar-zxvfsphinx-0.9.9.tar.gz3.編譯安裝:進(jìn)入到sphinx的源碼文件夾里,運(yùn)行下列命令就可以安裝sphinx了:cd /lamp/sphinx-0.9.9./configure -prefix=/usr/local/sphinx -with-mysql=/usr/local/mysqlmake & make install4.安裝完成之后,導(dǎo)入一些數(shù)據(jù);安裝完成之后,導(dǎo)入一些數(shù)據(jù)
4、;我們用安裝mysql自帶的test庫進(jìn)行測試;運(yùn)行/usr/local/sphinx/etc/目錄下的example.sql腳本,把數(shù)據(jù)導(dǎo)到數(shù)據(jù)庫中:/usr/local/mysql/bin/mysql -uroot -p* use test; /進(jìn)入test庫mysql show tables; /查看表Test庫中documents表是自動導(dǎo)進(jìn)來的;我們插入幾條中文進(jìn)去;mysql insert into documents values(null,1,10,now(),方研矩形,方研矩行科技有限公司);6.配置配置sphinx.conf配置文件配置文件;進(jìn)入到sphinx的etc目錄找
5、到配置文件cd /usr/local/sphinx/etc 我們需要備份一下配置文件,防止改錯不好處理。cp sphinx.conf.dist sphinx.conf 進(jìn)入配置文件。vim sphinx.confSphinx基本配置數(shù)據(jù)源 src是名字可以自己指定(意思就是說數(shù)據(jù)從哪里來得)source src1 13行 type = mysql # 數(shù)據(jù)庫類型 sql_host = localhost # MySQL主機(jī)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 #關(guān)閉緩存 74行sql_query= # 獲取數(shù)據(jù)的SQL語句 79行 (默認(rèn)就可以)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ù)編碼(設(shè)置成ut
8、f8) 34行charset_table = # 上面指定了utf-8,這里需要開啟。 353行index testlstemmed:test1增量索引 (先關(guān)閉掉#號注釋)481行index distl 分布式也注釋掉(暫時可以關(guān)閉,#號注釋)492行索引器設(shè)置indexer 529行 mem_limit = 256M # 內(nèi)存大小限制 默認(rèn)是 32M, 推薦為 256M 其他用默認(rèn)即可 sphinx服務(wù)進(jìn)程searchd的相關(guān)配置 565行searchd 全部用默認(rèn)的就可以了。如果是本地測試,使用默認(rèn)就可以,如果是多個服務(wù)器測試需要指定監(jiān)聽的ip即可。Sphinx配置文件結(jié)束 創(chuàng)建索引 -
9、c 指定配置文件 -all 對所有索引重新編制索引。 -rotate 用于輪換索引,主要是再不停止服務(wù)的時候,增加索引。 -buildstops -buildfreqs 要一起使用, 例:indexer myindex -buildstops text.txt 1000 -buildfreqs 會在當(dāng)前目錄下生成,一個名字叫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再次運(yùn)行創(chuàng)建索引命令就能完成索引的創(chuàng)建了/usr/local/sphinx/bin/indexer -all出現(xiàn)這樣的提示就表示創(chuàng)建成功測試創(chuàng)建的索引 檢查數(shù)據(jù)命令:
11、search (詳細(xì)方法會調(diào)用API使用) /usr/local/sphinx/bin/search -c test(test關(guān)鍵字)可以看到將數(shù)據(jù)中含有test關(guān)鍵字的數(shù)據(jù)查詢出來,包括文檔id,權(quán)重,屬性值等我們搜索下中文看下我們搜索下中文看下/usr/local/sphinx/bin/search -c /usr/local/sphinx/etc/sphinx.conf 方研矩行Coreseek cd /lamp tar -zxvf coreseek-3.2.14.tar.gz 進(jìn)入到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 然后運(yùn)行mmseg,就能輸入安裝成功的信息了: /usr/local/mmseg/bin/mmseg 出現(xiàn)這個就安裝成功啦接下來,我們要把接下來,我們要把Sphinx和和mmseg結(jié)合起來。結(jié)合起來。(1)檢測安裝 進(jìn)入coreseek目錄,進(jìn)行安裝。 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主機(jī)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 #關(guān)閉緩存 74行sql_query= # 獲取數(shù)據(jù)的SQL語句 79行 (默認(rèn)就可以)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 = # 這里需要關(guān)閉 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行 把名字該成想對應(yīng)的。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(主索引)自動實時跟新索引自動實時跟新索引我們需要建立兩個腳本,還要用到計劃任務(wù)。建立一個主索引和增量索引的腳本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ù)器表)最后,我們需要腳本能夠自動運(yùn)行,以實現(xiàn),增量索引每10分鐘重新建立,和主索引只在午夜2:30時重新建立。腳本寫好了,我們需要建立計劃任務(wù)crontab -e 來編輯 crontab文件,如果之前沒有使用,會是一個空的文件。寫下下面兩條語句*/10 * * * * /usr/local/coreseek/etc/delta.sh30 2 * *
24、 * /usr/local/coreseek/etc/main.sh第一條是表示每10分鐘運(yùn)行。第二條是表示 每天的 凌晨2:30分運(yùn)行(查看系統(tǒng)時間)如果提示權(quán)限問題,給腳本可執(zhí)行的權(quán)限 chmod 755 保存好后:重新啟動服務(wù)service crond stop service crond start5.使用PHP使用sphinx1.啟動服務(wù)啟動服務(wù)/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)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024石材加工行業(yè)標(biāo)準(zhǔn)化及質(zhì)量管理體系合作協(xié)議3篇
- 個人向公司借款詳細(xì)條款合同版B版
- 專業(yè)租車協(xié)議范本:2024年版
- 2025年度地質(zhì)勘查測繪合作協(xié)議書8篇
- 2024版銷售代表獎勵提成協(xié)議樣本一
- 集合2024年度醫(yī)療設(shè)備采購及安裝服務(wù)合同
- 2025年度文化旅游項目合作協(xié)議補(bǔ)充協(xié)議3篇
- 2024精密波紋管訂貨及銷售協(xié)議條款版B版
- 2025年度廠房租賃及品牌授權(quán)使用合同4篇
- 二零二五年度汽車后市場銷售提成及品牌代理協(xié)議
- 礦山隱蔽致災(zāi)普查治理報告
- 2024年事業(yè)單位財務(wù)工作計劃例文(6篇)
- 副總經(jīng)理招聘面試題與參考回答(某大型國企)2024年
- PDCA循環(huán)提高護(hù)士培訓(xùn)率
- 2024年工程咨詢服務(wù)承諾書
- 青桔單車保險合同條例
- 車輛使用不過戶免責(zé)協(xié)議書范文范本
- 《獅子王》電影賞析
- 2023-2024學(xué)年天津市部分區(qū)九年級(上)期末物理試卷
- DB13-T 5673-2023 公路自愈合瀝青混合料薄層超薄層罩面施工技術(shù)規(guī)范
- 河北省保定市定州市2025屆高二數(shù)學(xué)第一學(xué)期期末監(jiān)測試題含解析
評論
0/150
提交評論