亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

sphinx學習技巧:億萬級項目都在用的sphinx

2019-11-14 12:17:56
字體:
來源:轉載
供稿:網友

前言

年輕的時候總以為很多app或者網站的搜索功能是基于cache+sql的模式進行查詢的,也未曾想過數據是億萬級別,用戶也是億萬級別時候,cache和sql的入門級模式是否能應對。答案是肯定不能hold住的,現在年長了些,隨著項目的發展有幸接觸到相關解決方案,所以想記下來,備忘。 那么老規則本文主要解決三個問題: 1.如何解決與設計數據和用戶都是億萬級別的搜索的思路。 2.sphinx的簡介與特性 3.sphinx的安裝與運行 4.sphinx在億級項目中的使用場景

正文開始

1.如何解決與設計數據和用戶都是億萬級別的搜索的思路。

首先當數據量和用戶基數很大時候,意味著三個問題需要解決: 1.查詢的次數會很多并且需要快速返回; 2.查詢并發數會很高,如何正確的分流分壓; 3.數據的增長會很快,這部分增長的數據如何有效的處理才能實時搜索到;

MySQL自身的全文索引搜索慢,定制化程度低,自然無法滿足解決上述問題,那么就需要更高性能的自定義的搜索,sphinx出現了,它提供了針對上述三大問題都有相應的解決方案。sphinx是以以俄國全文檢索引擎,提供了高速、低空間占用、高結果相關度的全文搜索功能。主要方式是提供符合條件的數據源給sphinx,sphinx生成索引,依賴索引對外提供服務。更重要的是sphinx內置mysql數據庫數據源的支持,使用起來非常簡單,和使用mysql很大程度相似。

2.sphinx的簡介與特性

我的理解中的sphinx

1.sphinx的機制兩部分構成:生成索引+search索引 2.sphinx索引類型:普通索引+rt實時索引+分布式索引

特性(最新版sphinx性能某些方面更高于下面描述)

1.高速的建立索引(在當代CPU上,峰值性能可達到10 MB/秒); 2.高性能的搜索(在2 – 4GB 的文本數據上,平均每次檢索響應時間小于0.1秒); 3.可處理海量數據(目前已知可以處理超過100 GB的文本數據, 在單一CPU的系統上可 處理100 M 文檔); 4.提供了優秀的相關度算法,基于短語相似度和統計(BM25)的復合Ranking方法; 5.支持分布式搜索; 6.可作為MySQL的存儲引擎提供搜索服務; 7.支持布爾、短語、詞語相似度等多種檢索模式; 8.文檔支持多個全文檢索字段(最大不超過32個); 9.文檔支持多個額外的屬性信息(例如:分組信息,時間戳等); 10.支持單一字節編碼和UTF-8編碼; 11.原生的MySQL支持(同時支持MyISAM 和InnoDB ); 12.原生的PostgreSQL 支持.

反正就是很牛逼就是了。

3.sphinx的安裝與運行(此部分轉載的)

1.需要安裝的軟件 coreseek的mmseg包 mysql安裝包 sphinx-0.9.8版 sphinx中文分詞補丁1 sphinx中文分詞補丁2

2.安裝libmmseg

tar -zxvf mmseg-0.7.3.tar.gz cd mmseg-0.7.3 ./configure --PRefix=/usr/local/mmseg make make install 1234512345

有問題嘗試執行下面命令

echo '/usr/local/mmseg/lib' >> /etc/ld.so.conf ldconfig -v ln -s /usr/local/mmseg/bin/mmseg /bin/mmseg123123

3.重新編譯mysql 安裝sphinx之前先裝兩個補丁。

tar -zxvf sphinx-0.9.8-rc2.tar.gz cd sphinx-0.9.8 patch -p1 < ../sphinx-0.98rc2.zhcn-support.patch patch -p1 < ../fix-crash-in-excerpts.patch12341234

4.安裝sphinx

cd /root/lemp/sphinx-0.9.8-rc2 ./configure --prefix=/usr/local/sphinx --with-mysql=/opt/mysql / --with-mysql-includes=/opt/mysql/include/mysql --with-mysql-libs=/opt/mysql/lib/mysql / --with-mmseg-includes=/usr/local/mmseg/include --with-mmseg-libs=/usr/local/mmseg/lib --with-mmseg make1234512345tokenizer_zhcn.cpp:1:30: SegmenterManager.h: 沒有那個文件或目錄 tokenizer_zhcn.cpp:2:23: Segmenter.h: 沒有那個文件或目錄1212make clean ./configure --prefix=/usr/local/sphinx --with-mysql=/opt/mysql / --with-mysql-includes=/usr/local/mysql/include/mysql --with-mysql-libs=/opt/mysql/lib/mysql / --with-mmseg-includes=/usr/local/mmseg/include/mmseg --with-mmseg-libs=/usr/local/mmseg/lib --with-mmseg/root/sphinx/sphinx-0.9.8-rc2/src/tokenizer_zhcn.cpp:34: undefined reference to `libiconv_close' collect2: ld returned 1 exit status123456123456官網解決辦法:In the meantime I've change the configuration file and set#define USE_LIBICONV 0 in line 8179.修改configure 文件把 #define USE_LIBICONV 0 最后的數值由1改為0重新編譯。1234512345
make clean ./configure --prefix=/usr/local/sphinx --with-mysql=/opt/mysql / --with-mysql-includes=/usr/local/mysql/include/mysql --with-mysql-libs=/usr/local/mysql/lib/mysql / --with-mmseg-includes=/usr/local/mmseg/include/mmseg --with-mmseg-libs=/usr/local/mmseg/lib --with-mmseg12341234
vi configure輸入/define USE_LIBICONV 找到目標行按i鍵后將1改成0,按esc,輸入:wq保存退出123123
make make installcd /usr/local/sphinx/etc cp sphinx.conf.dist sphinx.conf12341234

5.配置sphinx

vim /usr/local/sphinx/etc/sphinx.conftype = mysql # some straightforward parameters for SQL source types sql_host = localhost sql_user = root sql_pass = sql_db = test sql_port = 3306 # optional, default is 3306address = 127.0.0.1 #安全點可以只監聽本機12345678910111234567891011

6.索引建立 裝好sphinx后在sphinx的目錄中有三個目錄 分別為bin etc var bin中 存有sphinx用到的一些執行文件 包括 indexer 索引建立 search 查詢工具 searchd 查詢服務器。備注:最新版已經沒有search 查詢工具了

usr/local/sphinx/bin/indexer --config /usr/local/sphinx/etc/sphinx.conf test1  建立索引期間可能由于不同版本的數據庫導致indexer找不到共享庫libmysqlclient.so.16需要把/opt/mysql/lib/mysql/libmysqlclient.so.16.0.0 這個文件復制到/usr/lib下 或者作軟連接即可12341234

7.查詢服務器 /usr/local/sphinx/bin/searchd –config /usr/local/sphinx/etc/sphinx.conf 為開啟

/usr/local/sphinx/bin/searchd –config /usr/local/sphinx/etc/sphinx.conf –stop 為關閉

sphinx的查詢 可以大致分為三種

7.1 數據庫引擎中的查詢7.2 通過search工具查詢(最新版已不提供這個工具)    /usr/local/sphinx/bin/search --config     /usr/local/sphinx/etc/sphinx.conf test7.3 通過php的接口查詢 詳見sphinxapi.php

8.創建sphinx啟動腳本與配置

#!/bin/sh # sphinx: Startup script for Sphinx search # # chkconfig: 345 86 14 # description:  This is a daemon for high performance full text / #               search of MySQL and PostgreSQL databases. / #               See http://www.sphinxsearch.com/ for more info. # # processname: searchd # pidfile: $sphinxlocation/var/log/searchd.pid # Source function library. . /etc/rc.d/init.d/functions processname=searchd servicename=sphinx username=sphinx sphinxlocation=/usr/local/sphinx pidfile=$sphinxlocation/var/log/searchd.pid searchd=$sphinxlocation/bin/searchd RETVAL=0 PATH=$PATH:$sphinxlocation/bin start() {     echo -n $"Starting Sphinx daemon: "     daemon --user=$username --check $servicename $processname     RETVAL=$?     echo     [ $RETVAL -eq 0 ] && touch /var/lock/subsys/$servicename } stop() {     echo -n $"Stopping Sphinx daemon: "     $searchd --stop     #killproc -p $pidfile $servicename -TERM     RETVAL=$?     echo     if [ $RETVAL -eq 0 ]; then         rm -f /var/lock/subsys/$servicename         rm -f $pidfile     fi } # See how we were called. case "$1" in     start)         start         ;;     stop)         stop         ;;     status)         status $processname         RETVAL=$?         ;;     restart)         stop sleep 3         start         ;;     condrestart)         if [ -f /var/lock/subsys/$servicename ]; then             stop     sleep 3             start         fi         ;;     *)         echo $"Usage: $0 {start|stop|status|restart|condrestart}"         ;; esac exit $RETVAL123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
chmod 755 /etc/init.d/sphinx chkconfig --add sphinx chkconfig --level 345 sphinx on chkconfig --list|grep sphinx #檢查下service sphinx start #運行 service sphinx stop  #停止,官方的腳本在我的as4上有點問題,所以粗魯的改了下 service sphinx restart #重啟 service sphinx status #查看是否運行#檢查下已用sphinx用戶運行ps aux |grep searchd sphinx   24612  0.0  0.3 11376 6256 pts/1    S    14:07   0:00 searchd123456789101112123456789101112

4.sphinx在億級項目中的使用場景

不管是網站還是app很多產品的設計思路和產品功能多多少少都有相似之處,那么這邊主要講以下幾個場景

描述、話題的搜索

主要的實現思路是全量索引+增量索引方式,可設定時任務定點跑索引

用戶昵稱的搜索

主要是實現思路是實時索引+分布式索引的方式,用戶由于過多,故使用實時索引的方法進行增加,舊數據通過跑腳本重新讀取后再寫入。

搜索框聯想詞的提示

主要實現思路是分布式索引的方式,自動聯想其他人曾經輸入過的詞語。


tip: morphology = stem_en會啟用英文單詞的提取。搜索英文時候就不會一個一個字母搜了,會提高sphinx搜索英文單詞的時候的效率。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲国产一区二区三区在线观看| 欧美日韩福利在线观看| 欧美性猛交xxxx偷拍洗澡| 日韩在线小视频| 国产福利精品在线| 久久久久久久爱| 亚洲精品v欧美精品v日韩精品| 欧美色道久久88综合亚洲精品| 欧美在线视频导航| 最近2019年中文视频免费在线观看| 成人欧美一区二区三区在线湿哒哒| 久久精品福利视频| 久久视频在线免费观看| 欧美日韩美女在线观看| 亚洲一区www| 国产亚洲视频在线| 国产精品成人一区| 亚洲国产精品va在线观看黑人| 欧美日韩一区免费| 国产精品自拍视频| 亚洲精品美女免费| 国产精品视频xxxx| 91热福利电影| 国产精品久久久久久久久久ktv| 亚洲专区国产精品| 久久国产精品亚洲| 色久欧美在线视频观看| 亚洲国产精品推荐| 国产成人精品综合| 日韩欧美精品免费在线| 亚洲国产成人一区| 欧美成人自拍视频| 久久偷看各类女兵18女厕嘘嘘| 欧美激情二区三区| 欧美高清在线观看| 日韩精品视频在线播放| 国产精品无码专区在线观看| 日韩国产欧美精品在线| 亚洲亚裔videos黑人hd| 国产精品∨欧美精品v日韩精品| 免费91麻豆精品国产自产在线观看| 在线视频欧美日韩| 尤物精品国产第一福利三区| 这里只有精品丝袜| 日韩女在线观看| 亚洲精品之草原avav久久| 欧美激情xxxx性bbbb| 日韩精品福利在线| 中文字幕日韩综合av| 国产+人+亚洲| 国产视频综合在线| 最近日韩中文字幕中文| 国产精品色悠悠| 亚洲tv在线观看| 国产自摸综合网| 成人妇女淫片aaaa视频| 在线视频精品一| 久久精品国产欧美亚洲人人爽| 久久精品99无色码中文字幕| 亚洲精品网站在线播放gif| 欧美午夜激情小视频| 神马久久桃色视频| 成人有码视频在线播放| 91av视频在线| 日韩av网址在线观看| 美女精品视频一区| 亚洲精品电影网| 久久手机精品视频| 91免费国产视频| 亚洲欧洲自拍偷拍| 青青精品视频播放| 91精品啪aⅴ在线观看国产| 成人综合国产精品| 国模视频一区二区| 国产精品丝袜白浆摸在线| 精品美女久久久久久免费| 一本一本久久a久久精品牛牛影视| 久久久久久国产精品久久| 91亚洲精华国产精华| 欧美激情免费看| 日韩欧美一区二区三区| 精品欧美国产一区二区三区| 欧美老女人性视频| 97精品久久久中文字幕免费| 亚洲国产一区二区三区在线观看| 成人免费在线视频网站| 国产精品久久久999| 北条麻妃一区二区三区中文字幕| 国产91色在线| 国产精品久久久久久久久久久新郎| 欧美高清在线播放| 亚洲欧美日韩天堂一区二区| 亚洲淫片在线视频| 成人免费激情视频| 黑人巨大精品欧美一区二区免费| 国内精品久久久久影院 日本资源| 国产精品老牛影院在线观看| 国产成人精品在线观看| 国产精品中文字幕在线观看| 国产精品国产自产拍高清av水多| 国产精品日韩在线一区| 欧美午夜精品久久久久久久| 在线播放国产一区中文字幕剧情欧美| 久久天天躁狠狠躁夜夜躁| 91视频8mav| 91精品国产免费久久久久久| 88国产精品欧美一区二区三区| 欧美在线性视频| 国产精品爽爽ⅴa在线观看| 亚洲国产精品人人爽夜夜爽| 久久中文字幕一区| 欧美大奶子在线| 精品久久久国产精品999| 亚洲国产日韩欧美在线图片| 成人免费视频网址| 日韩欧美在线第一页| 91丨九色丨国产在线| 欧美午夜宅男影院在线观看| 日韩欧美精品网址| 亚洲人精品午夜在线观看| 成人黄色在线免费| 日韩不卡在线观看| 亚洲精品美女视频| 性色av一区二区三区在线观看| 国产精品入口免费视频一| 精品色蜜蜜精品视频在线观看| 国产精品福利在线观看| www.亚洲一二| 久久这里有精品视频| 欧洲s码亚洲m码精品一区| 97欧美精品一区二区三区| 岛国视频午夜一区免费在线观看| 欧美丝袜一区二区三区| 久久综合免费视频影院| 日韩av黄色在线观看| 久久影院在线观看| 深夜福利91大全| 欧美日韩国产区| 自拍偷拍免费精品| 久久久久久91香蕉国产| 日韩在线观看你懂的| 在线视频欧美性高潮| 一本色道久久综合狠狠躁篇的优点| 日韩精品在线免费观看视频| 精品亚洲va在线va天堂资源站| 国产精品国产三级国产专播精品人| 亚洲黄色成人网| 日韩中文综合网| 538国产精品一区二区免费视频| 亚洲天堂视频在线观看| 欧美贵妇videos办公室| 国产成人高清激情视频在线观看| 午夜精品久久久久久久99热浪潮| 欧美另类69精品久久久久9999| 最近2019年好看中文字幕视频| 国内揄拍国内精品少妇国语| 国产精品成人va在线观看| 91国在线精品国内播放| 亚洲一二在线观看| 亚洲电影天堂av| 青青草原成人在线视频| 国产乱肥老妇国产一区二| 亚洲欧美视频在线| 久久九九精品99国产精品|