Sphinx : 高效能SQL全文檢索引擎
Sphinx是一款基於SQL的高效能全文檢索引擎,Sphinx的效能在眾多全文檢索引擎中也是數一數二的,利用Sphinx,我們可以完成比資料庫本身更專業的搜尋功能,而且可以有很多針對性的效能最佳化。
Sphinx的特點
- 快速建立索引:3分鐘左右即可建立近100萬條記錄的索引,並且採用了增量索引的方式,重建索引非常迅速。
- 閃電般的檢索速度:儘管是1千萬條的大資料量,查詢資料的速度也在毫秒級以上,2-4G的文字量中平均查詢速度不到0.1秒。
- 為很多指令碼語言設計了檢索API,如PHP,Python,Perl,Ruby等,因此你可以在大部分程式設計應用中很方便地呼叫Sphinx的相關介面。
- 為MySQL設計了一個儲存引擎外掛,因此如果你在MySQL上使用Sphinx,那簡直就方便到家了。
- 支援分散式搜尋,可以橫向擴充套件系統效能。
PHP+MySQL+Sphinx 搜尋引擎架構圖
在MySQL中安裝Sphinx
Sphinx在MySQL上安裝有兩種方式:
- 第一種方式是採用API呼叫,我們可以使用PHP,Python,Perl,Ruby等程式語言的API函式進行查詢,這種方式不必重新編譯MySQL,模組間改動比較少,相對靈活。
- 第二種需要重新編譯MySQL,將Sphinx以外掛的方式編譯到MySQL中去,這種方式對程式改動比較少,僅僅需要改動SQL語句即可,但前提是你的MySQL版本必須在5.1以上。
下面是第一種安裝方式:
#下載最新穩定版
wget http://www.sphinxsearch.com/downloads/sphinx-0.9.9.tar.gz
tar xzvf sphinx-0.9.9.tar.gz
cd sphinx-0.9.9
./configure --prefix=/usr/local/sphinx/ --with-mysql --enable-id64
make
make install
Sphinx中文分詞外掛Coreseek安裝
注:coreseek的安裝教程來自這裡,下面是詳細過程:
安裝升級autoconf
因為coreseek需要autoconf 2.64以上版本,因此需要升級autoconf,不然會報錯。從http://download.chinaunix.net/download.php?id=29328&ResourceID=648 下載autoconf-2.64.tar.bz2,安裝方法如下:
tar -jxvf autoconf-2.64.tar.bz2
cd autoconf-2.64
./configure
make
make install
下載coreseek
新版本的coreseek將詞典和sphinx源程式放在了一個包中,因此只需要下載coreseek包就可以了。
wget http://www.wapm.cn/uploads/csft/3.2/coreseek-3.2.14.tar.gz
安裝mmseg(coreseek所使用的詞典)
tar xzvf coreseek-3.2.14.tar.gz
cd mmseg-3.2.14
./bootstrap #輸出的warning資訊可以忽略,如果出現error則需要解決
./configure --prefix=/usr/local/mmseg3
make && make install
cd ..
安裝coreseek(sphinx)
cd csft-3.2.14
sh buildconf.sh #輸出的warning資訊可以忽略,如果出現error則需要解決
./configure --prefix=/usr/local/coreseek --without-unixodbc --with-mmseg --with-mmseg-includes=/usr/local/mmseg3/include/mmseg/ --with-mmseg-libs=/usr/local/mmseg3/lib/ --with-mysql
make && make install
cd ..
測試mmseg分詞和coreseek搜尋
備註:需要預先設定好字符集為zh_CN.UTF-8,確保正確顯示中文,我的系統字符集為en_US.UTF-8也是可以的。
cd testpack
cat var/test/test.xml #此時應該正確顯示中文
/usr/local/mmseg3/bin/mmseg -d /usr/local/mmseg3/etc var/test/test.xml
/usr/local/coreseek/bin/indexer -c etc/csft.conf --all
/usr/local/coreseek/bin/search -c etc/csft.conf 網路搜尋
此時正確的應該返回
words:
1. '網路': 1 documents, 1 hits
2. '搜尋': 2 documents, 5 hits
生成 mmseg詞庫及配置檔案
新版本的已經自動生成。
總結
Sphinx作為一款高效能的SQL全文檢索引擎,值得開發者繼續關注,尤其是它多語言的API支援,使開發者可以更方便地應用。
相關文章
- php + MongoDB + Sphinx 實現全文檢索PHPMongoDB
- Linux Sphinx/Coreseek安裝 Mysql全文檢索LinuxMySql
- Oracle全文檢索Oracle
- 全文檢索庫 bluge
- Kibana 全文檢索操作
- solr全文檢索學習Solr
- Oracle全文檢索之中文Oracle
- 【搜尋引擎】Solr全文檢索近實時查詢優化Solr優化
- 基於ElasticSearch實現商品的全文檢索檢索Elasticsearch
- elasticsearch的實現全文檢索Elasticsearch
- Oracle全文檢索之Ctxcat 索引Oracle索引
- Oracle全文檢索之ContextOracleContext
- 請問全文檢索的思路?
- oracle全文索引之配置全文檢索環境Oracle索引
- Oracle的全文檢索技術(轉)Oracle
- 全文檢索技術lucene的demo
- 全文檢索的基本原理
- PostgreSQL全文檢索-詞頻統計SQL
- coreseek,php,mysql全文檢索部署(一)PHPMySql
- coreseek,php,mysql全文檢索部署(二)PHPMySql
- 手工建立oracle text全文檢索元件Oracle元件
- openGauss每日一練(全文檢索)
- 全文檢索引擎(三)---原理剖析索引
- 基於Lucene的全文檢索實踐
- ElasticSearch 實現分詞全文檢索 - 概述Elasticsearch分詞
- 全文字檢索的應用(2)(轉)
- 全文字檢索的應用(1)(轉)
- IM全文檢索技術專題(四):微信iOS端的最新全文檢索技術優化實踐iOS優化
- 【搜尋引擎】Solr Suggester 實現全文檢索功能-分詞和和自動提示Solr分詞
- PHP+redis實現超迷你全文檢索PHPRedis
- Lucene可以對MYSQL進行全文檢索嗎?MySql
- 【IT老齊072】全文檢索執行原理
- springboot ElasticSearch 簡單的全文檢索高亮Spring BootElasticsearch
- ElasticSearch 實現分詞全文檢索 - delete-by-queryElasticsearch分詞delete
- RDSforMySQL全文檢索相關問題的處理ORMMySql
- Laravel 使用 xunsearch(迅搜)全文檢索引擎Laravel索引
- Mysql 如何實現全文檢索,關鍵詞跑分MySql
- 個人部落格分享(Laravel + Vue 元件,支援全文檢索)LaravelVue元件