一、Sphinx是什麼?
解釋1:Sphinx是由俄羅斯人Andrew Aksyonoff開發的一個全文檢索引擎(高性能全文搜索軟件)。在GPL與商業協議雙許可協議下發行。全文檢索是指以文檔的全部文本信息作爲檢索對象的一種信息檢索技術。檢索的對象有可能是文章的標題,也有可能是文章的作者,也有可能是文章摘要或內容。
意圖爲其他應用提供高速、低空間佔用、高結果 相關度的全文搜索功能。Sphinx可以非常容易的與SQL數據庫和腳本語言集成。
解釋2:Sphinx是一個基於SQL的全文檢索引擎,可以結合MySQL,PostgreSQL做全文搜索,它可以提供比數據庫本身更專業的搜索功能,使得應用程序更容易實現專業化的全文檢索。Sphinx特別爲一些腳本語言設計搜索API接口,如PHP,Python,Perl,Ruby等,同時爲MySQL也設計了一個存儲引擎插件。
二、Sphinx的概述和架構
1.爲什麼要用Spinx?
假設你現在運營着一個論壇,論壇數據已經超過100W,很多用戶都反映論壇搜索的速度非常慢,那麼這時你就可以考慮使用Sphinx了(當然其他的全文檢索程序或方法也行);
2.Sphinx的概述。
Sphinx 單一索引最大可包含1億條記錄,在1千萬條記錄情況下的查詢速度爲0.x秒(毫秒級)。Sphinx創建索引的速度爲:創建100萬條記錄的索引只需 3~4分鐘,創建1000萬條記錄的索引可以在50分鐘內完成,而只包含最新10萬條記錄的增量索引,重建一次只需幾十秒。
3.Sphinx的架構。
三、Sphinx的組成
Sphinx 組件
索引生成器(indexer)
查詢數據庫,爲結果的每行中的指定字段建立索引,並且將每個索引條目綁定到行的主鍵上。
搜索引擎(searchd)
搜索引擎是名爲 searchd 的守護程序。該守護程序將接收搜索詞和其他參數,快速遍歷一個或多個索引,並返回結果。如果找到匹配,searchd 將返回一個主鍵數組。對於這些鍵,應用程序可以針對相關數據庫運行查詢來查找包含匹配的完整記錄。Searchd 默認將在端口 3312 上通過套接字連接與應用程序進行通信。
命令行search實用程序(search)
search 實用程序使您可以從命令行構造搜索而無需編寫代碼。如果 searchd 返回匹配,則 search 將查詢數據庫並顯示匹配集中的行。search 實用程序對於調試 Sphinx 配置和執行臨時搜索十分有用。
四、Sphinx的特性(優、缺點)
優點:
高速索引 (在新款CPU上,近10 MB/秒);
高速搜索 (2-4G的文本量中平均查詢速度不到0.1秒);
高可用性 (單CPU上最大可支持100 GB的文本,100M文檔);
提供良好的相關性排名
支持分佈式搜索;
提供文檔摘要生成;
提供從MySQL內部的插件式存儲引擎上搜索
支持布爾,短語, 和近義詞查詢;
支持每個文檔多個全文檢索域(默認最大32個);
支持每個文檔多屬性;
支持斷詞;
支持單字節編碼與UTF-8編碼;
支持多字段的檢索域
支持MySQL(MYISAM和INNODB)和Postgres數據庫
支持windows, linux, unix, mac等平臺
缺點:
必須要有主鍵
主鍵必須爲整型
不負責數據存儲
配置不靈活
五、如何獲得Sphinx.
Sphinx 可以從官方網站http://www.sphinxsearch.com/ 下載,支持中文分詞的Sphinx可以從http://www.coreseek.com/ 下載。
目前,Sphinx的發佈包包括如下軟件:
indexer: 用於創建全文索引;?
search: 一個簡單的命令行(CLI) 的測試程序,用於測試全文索引;?
searchd: 一個守護進程,其他軟件可以通過這個守護進程進行全文檢索;?
sphinxapi: 一系列searchd 的客戶端API 庫,用於流行的Web腳本開發語言(PHP, Python, Perl, Ruby)。
-------------------------------------------------------------------------------------------------------------
安裝及配置見下一章程。