1 使用場景:用來解決站內搜索的一些應用場景。mysql
網站中的搜索(站內搜索)
系統後臺中的搜索
第一種方式:PHP——>MySQL
第二種方式:MySQL<——>Sphinx;PHP——>Sphinx。
MySQL全文索引引擎也能夠解決站內搜索,當數據庫某張表數據量大的時候,作搜索花費時間多。
MySQL:添加索引 alert table 表名 add index 隨便起索引名字(字段)
Sphinx將mysql數據生成一個索引數據表供前臺檢索能夠提升檢索效率。
2 Sphinxsql
Sphinx是一個基於SQL的全文檢索引擎,能夠結合MySQL,PostgreSQL作全文搜索,它能夠提供比數據庫自己更專業的搜索功能,使得應用程序更容易實現專業化的全文檢索。
Sphinx特別爲一些腳本語言設計搜索API接口,如PHP,Python,Perl,Ruby等,同時爲MySQL也設計了一個存儲引擎插件。
Sphinx 單一索引最大可包含1億條記錄,在1千萬條記錄狀況下的查詢速度爲0.x秒(毫秒級)。
Sphinx建立索引的速度爲:
建立100萬條記錄的索引只需 3~4分鐘,建立1000萬條記錄的索引能夠在50分鐘內完成,而只包含最新10萬條記錄的增量索引,重建一次只需幾十秒。
Sphinx的主要特性包括:數據庫
高速索引 (在新款CPU上,近10 MB/秒); 高速搜索 (2-4G的文本量中平均查詢速度不到0.1秒); 高可用性 (單CPU上最大可支持100 GB的文本,100M文檔); 提供良好的相關性排名 支持分佈式搜索; 提供文檔摘要生成; 提供從MySQL內部的插件式存儲引擎上搜索 支持布爾,短語, 和近義詞查詢; 支持每一個文檔多個全文檢索域(默認最大32個); 支持每一個文檔多屬性; 支持斷詞; 支持單字節編碼與UTF-8編碼;
3 兩個重要的工具indexer 和 searched分佈式
indexer:用於建立索引數據工具
/user/bin/indexer -config /etc/sphinxsearch/sphinx.conf -all
searched:後臺進程,使用indexer工具生成的數據作查詢
4 索引文件存儲的數據種類網站
.spa 存儲文檔屬性
.spd 存儲每一個詞ID可匹配的文檔ID列表
.sph 存儲索引頭信息
.spi 存儲詞列表
.spm 存儲MVA數據
.spp 存儲每一個詞的命中列表
5 查看sphinx數據編碼
sphinx進入mysql的命令:spa
mysql -h0 -p9306(sphinx與數據庫交互的端口號)