




已閱讀5頁,還剩33頁未讀, 繼續(xù)免費閱讀
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
2009-11-06,Sphinx 使用經(jīng)驗分享,研發(fā)中心 黃勝,Contents,引言,1,什么是Sphinx,Sphinx 優(yōu)缺點,4,系統(tǒng)的安裝部署,3,5,Sphinx 的配置,6,相關(guān)應(yīng)用,4,2,5,6,引言,1,引言,系統(tǒng)A: 數(shù)據(jù)量大,內(nèi)容審核現(xiàn)有搜索建立索引慢;人員流動,現(xiàn)有搜索難于維護;,背景:內(nèi)容審核搜索的現(xiàn)狀,系統(tǒng)B: 前端調(diào)用復(fù)雜;使用全表掃描,搜索速度慢;對結(jié)果的沒有排序;難于最快找到最精確的數(shù)據(jù),改進要點: 1、高速的索引建立; 2、避免對數(shù)據(jù)庫做like操作,減少壓力; 3、對搜索的結(jié)果進行權(quán)重排序; 4、前端開發(fā)調(diào)用方便; 5、最好門檻低,易于掌握且后期維護,引言,為什么是Sphinx ?,引言,Contents,什么是Sphinx,2,Hot Tip,什么是全文檢索? 全文檢索是指計算機索引程序通過掃描文章中的每一個詞,對每一個詞建立一個索引, 指明該詞在文章中出現(xiàn)的次數(shù)和位置,當用戶查詢時,檢索程序就根據(jù)事先建立的索引進行查找,并將查找的結(jié)果反饋給用戶的檢索方式。這個過程類似于通過字典中的檢索字表查字的過程。全文檢索系統(tǒng)是按照全文檢索理論建立起來的用于提供全文檢索服務(wù)的軟件系統(tǒng)。 一般來說,全文檢索需要具備建立索引和提供查詢的基本功能,此外現(xiàn)代的全文檢索系統(tǒng)還需要具有方便的用戶接口、面向WWW的開發(fā)接口、二次應(yīng)用開發(fā)接口等等。 功能上,全文檢索系統(tǒng)核心具有建立索引、處理查詢返回結(jié)果集、增加索引、優(yōu)化索引結(jié)構(gòu)等等功能,外圍則由各種不同應(yīng)用具有的功能組成。 結(jié)構(gòu)上,全文檢索系統(tǒng)核心具有索引引擎、查詢引擎、文本分析引擎、對外接口等等,加上各種外圍應(yīng)用系統(tǒng)等等共同構(gòu)成了全文檢索系統(tǒng)。,什么是Sphinx,Hot Tip,什么是全文檢索?,什么是Sphinx,Hot Tip,什么是Sphinx? (Sphinx = SQL prase index) Sphinx是一個基于SQL的全文檢索引擎,可以結(jié)合MySQL,PostgreSQL做全文搜索,它可以提供比數(shù)據(jù)庫本身更專業(yè)的搜索功能,使得應(yīng)用程序更容易實現(xiàn)專業(yè)化的全文檢索。Sphinx特別為一些腳本語言設(shè)計搜索API接口,如PHP,Python,Perl,Ruby等。同時為MySQL也設(shè)計了一個存儲引擎插件。,什么是Sphinx,Hot Tip,Sphinx 組件 索引生成器(indexer) 查詢數(shù)據(jù)庫,為結(jié)果的每行中的指定字段建立索引,并且將每個索引條目綁定到行的主鍵上。 搜索引擎(searchd) 搜索引擎是名為 searchd 的守護程序。該守護程序?qū)⒔邮账阉髟~和其他參數(shù),快速遍歷一個或多個索引,并返回結(jié)果。如果找到匹配,searchd 將返回一個主鍵數(shù)組。對于這些鍵,應(yīng)用程序可以針對相關(guān)數(shù)據(jù)庫運行查詢來查找包含匹配的完整記錄。Searchd 默認將在端口 3312 上通過套接字連接與應(yīng)用程序進行通信。 命令行search實用程序(search) search 實用程序使您可以從命令行構(gòu)造搜索而無需編寫代碼。如果 searchd 返回匹配,則 search 將查詢數(shù)據(jù)庫并顯示匹配集中的行。search 實用程序?qū)τ谡{(diào)試 Sphinx 配置和執(zhí)行臨時搜索十分有用。,什么是Sphinx,Sphinx 優(yōu)缺點,3,Sphinx 優(yōu)缺點,優(yōu)點: 高速索引 (10MB/s) 高速搜索 (2-4G的文本量中平均查詢速度不到0.1秒) 高可用性 (單CPU上最大可支持100 GB的文本,100萬條紀錄) 提供良好的相關(guān)性排名 支持分布式搜索 提供MySQL內(nèi)部插件式存儲引擎上搜索 支持多字段的檢索域 支持斷詞 支持MySQL(MYISAM和INNODB)和Postgres數(shù)據(jù)庫 支持windows, linux, unix, mac等平臺,Sphinx 優(yōu)缺點,缺點: 必須要有主鍵 主鍵必須為整型 不負責(zé)數(shù)據(jù)存儲 配置不靈活 (),Diagram,系統(tǒng)的安裝部署,4,系統(tǒng)的安裝部署,安裝步驟: 中文分詞工具mmseg 數(shù)據(jù)庫mysql Sphinx插件補丁(SphinxSE) Sphinx中文支持 安裝Sphinx 配置,系統(tǒng)的安裝部署,安裝中文分詞工具mmseg : cd /opt/search/src tar xf mmseg-0.7.3.tar.gz cd mmseg-0.7.3 ./configure prefix=/opt/search/app/mmseg make make install make clean,系統(tǒng)的安裝部署,安裝中文分詞工具mmseg :,系統(tǒng)的安裝部署,安裝MySQL數(shù)據(jù)庫 : cd /opt/search/src tar xf sphinx-0.9.8-rc2.tar.gz tar xf mysql-5.1.29-rc.tar.gz cd sphinx-0.9.8-rc2 patch p1 /sphinx-0.98rc2.zhcn-support.patch #sphinxse插件 patch p1 / fix-crash-in-excerpts.patch #sphinx支持中文 cp rf mysqlse /opt/search/src/mysql-5.1.29-rc/storage/sphinx cd /opt/search/src/mysql-5.1.29-rc/ ./configure -prefix=/opt/search/app/mysql -localstatedir=/opt/search/app/mysql/var -without-debug -with-charset=gbk -with-client-ldflags=-all-static -enable-assembler -with-extra-charsets=all -enable-thread-safe-client -with-plugins=innobase,partition,sphinx make make install make clean,系統(tǒng)的安裝部署,安裝MySQL數(shù)據(jù)庫 :,系統(tǒng)的安裝部署,安裝Sphinx: cd /opt/search/src/sphinx-0.9.8-rc2 ./configure -prefix=/opt/search/app/sphinx -with-mysql=/opt/search/app/mysql/ -with-mysql-includes=/opt/search/app/mysql/include/mysql/ -with-mysql-libs=/opt/search/app/mysql/lib/mysql/ -with-mmseg=/opt/search/app/mmseg/ -with-mmseg-includes=/opt/search/app/mmseg/include/mmseg/ -with-mmseg-libs=/opt/search/app/mmseg/lib/ make make install make clean,Sphinx 的配置,5,Sphinx 的配置,Sphinx 的配置 配置文件的內(nèi)容組成: Source 源名稱1 Index 索引名稱1 Source 源名稱2 Index 索引名稱2 Indexer Searchd ,Sphinx 的配置,字典生成 cd /opt/search/src/mmseg-0.7.3/data /opt/search/app/mmseg/bin/mmseg -u unigram.txt cp unigram.txt.uni /opt/search/app/sphinx/uni.lib,Sphinx 的配置,#日記頻道 #source部分 source diary type = mysql sql_host = localhost sql_user = search sql_pass = GZj4yngYWRXZtlUDJFeE sql_db = search sql_sock = /tmp/mysql.sock sql_port = 3306 sql_query_pre = SET NAMES gbk sql_query_pre = SET SESSION query_cache_type=OFF sql_query_range = SELECT MIN(diary_aid), MAX(diary_aid) FROM diary WHERE 1 sql_query = SELECT diary_aid, diary_id, diary_owner, diary_title, diary_memo FROM diary WHERE diary_aid=$start AND diary_aid$end sql_range_step = 10000 #sql_attr_uint = diary_aid #sql_attr_timestamp = diary_addtime sql_query_info = SELECT * FROM diary WHERE diary_aid=$id ,Sphinx 的配置,#日記頻道 #index 部分 index diary source = diary path = /opt/search/app/sphinx/var/data/diary_new/diary_new docinfo = extern mlock = 0 morphology = none min_word_len = 2 charset_type = zh_cn.gbk charset_dictpath = /opt/search/app/sphinx/ min_infix_len = 0 enable_star = 1 html_strip = 0 charset_table = “” ,Sphinx 的配置,#日記頻道 #indexer & searchd indexer mem_limit = 512M searchd port = 3321 log = /opt/search/app/sphinx/var/log/searchd_diary_new.log query_log = /opt/search/app/sphinx/var/log/query_diary_new.log read_timeout = 5 max_children = 30 pid_file = /opt/search/app/sphinx/var/log/searchd_diary_new.pid max_matches = 10000 seamless_rotate = 1 preopen_indexes = 0 unlink_old = 1 ,Sphinx 的配置,Sphinx 主索引+增量索引配置 配置文件的內(nèi)容組成: Source 源名稱1 Source 增量1 : 源名稱1 Index 主索引1 Index 增量索引1 : 主索引1 Indexer Searchd ,Sphinx 的配置,Sphinx 主索引+增量索引配置 配置文件的內(nèi)容組成: Source 源名稱1 Source 增量1 : 源名稱1 Index 主索引1 Index 增量索引1 : 主索引1 Indexer Searchd ,Sphinx 的配置,Sphinx 主索引+增量索引配置(主索引數(shù)據(jù)源) sql_query_pre = SET NAMES utf8 sql_query_pre = SET SESSION query_cache_type=OFF sql_query_pre = REPLACE INTO search_counter SELECT 1,MAX(pid) FROM cdb_posts #創(chuàng)建主索引前更改標識位置 sql_query = SELECT pid, fid,tid,authorid, dateline, subject, message FROM cdb_posts WHERE pid = $start AND pid = $end sql_query_range = SELECT 1, max_doc_id FROM search_counter WHERE counterid = 1 sql_range_step = 1000,Sphinx 的配置,Sphinx 主索引+增量索引配置(增量索引數(shù)據(jù)源) sql_query_pre = SET NAMES utf8 sql_query_pre = SET SESSION query_cache_type=OFF sql_query = SELECT pid, fid,tid,authorid, dateline, subject, message FROM cdb_posts WHERE pid (SELECT max_doc_id FROM search_counter WHERE counterid=1),Sphinx 的配置,創(chuàng)建索引 主索引 cd /opt/search/app/sphinx ./bin/indexer c ./etc/diary.conf 主索引1 -rotate 增量索引 cd /opt/searchd/app/sphinx ./bin/indexer c ./etc/diary.conf 增量索引1 -rotate 合并主索引和增量索引 cd /opt/searchd/app/sphinx ./bin/indexer -config etc/sphinx.conf -merge 主索引 增量索引 -merge-dst-range deleted 0 0 -rotate,Contents,Sphinx 的應(yīng)用,6,Sphinx 的應(yīng)用,Sphinx 調(diào)用方式 1、自帶search 2、Sphinx官方提供的API接口 3、通過安裝的SphinxSE,Sphinx 的應(yīng)用,Sphinx 調(diào)用方式 自帶search cd /opt/search/app/sphinx ./bin/search c ./etc/diary.conf 搜索詞,Sphinx 的應(yīng)用,Sphinx 調(diào)用方式 Sphinx官方提供的API接口 $cl = new SphinxClient (); /創(chuàng)建Sphinx的客戶端接口對象 $cl-SetServer(localhost,3312); /設(shè)置連接Sphinx主機名與端口 $cl-SetWeights ( array ( 100, 1 ) ); /可選,為檢索字段設(shè)置權(quán)重 $cl-SetMatchMode(SPH_MATCH_ALL); /設(shè)定搜索模式 $cl-SetGroupBy($attribute, $func, $groupsort); /相當于GROUP BY $cl-SetSortMod
溫馨提示
- 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 3-4-Dichloromethcathinone-hydrochloride-生命科學(xué)試劑-MCE
- 商戶門面租房合同范本
- 車隊司機合同范本
- 汽車油漆采購合同范本
- 拿貨購銷合同范本
- 電梯標準施工合同范本
- 設(shè)備采購合同范本8篇
- 2025年碳酸乙烯酯項目發(fā)展計劃
- 2025年溫泉水開發(fā)利用項目發(fā)展計劃
- 2025年防眩光太陽鏡合作協(xié)議書
- 各種el34名膽電子管評測
- 超分子化學(xué)-杯芳烴課件
- 車標識別 課講義件課件
- 一年級下學(xué)期安全教育教案
- 哈薩克斯坦共和國勞動法解讀
- 送達地址確認書(樣本)
- 甘肅省酒泉市各縣區(qū)鄉(xiāng)鎮(zhèn)行政村村莊村名明細
- 壓力容器考試審核考試題庫(容標委-氣體協(xié)會聯(lián)合)
- 學(xué)校食堂操作流程圖
- DB13 2795-2018 大清河流域水污染物排放標準
- 2022年t-a水性聚氨酯粘合劑項目環(huán)境影響報告書
評論
0/150
提交評論