Sphinx的含義是“獅身人面像”,是古埃及的金字塔建築,傳說Sphinx是有翼的獅身女怪,她常叫過 路行人猜謎, 猜不出者即遭殺害。
但是我這裡說的Sphinx是一個高性能的搜索引擎:
http://www.sphinxsearch.com/
Sphinx是一個俄國人開發的搜索引擎,它的主要特點是:
一、性能非常出色
150萬條記錄一兩分鐘就索引完畢,2-4GB以內的文本檢索速度不到0.1秒鐘。ferret也望塵莫及,更不 要說lucene了。
二、和數據庫集成性很好
Sphinx通過配置文件可以自行讀取數據庫信息做索引,不依賴任何外部的應用程序,並且可以作為一 個daemon進程啟動,支持分布式檢索,並發響應性能很好。因此很多過去使用ferret的人因為並發檢索的 問題都改用Sphinx了。
三、可以做MySQL的全文檢索
MySQL的數據庫引擎是可插拔的結構,Sphinx開發了一個SphinxSE數據庫引擎,可以在編譯MySQL的時 候直接編譯到MySQL裡面去,這樣的話,可以在數據庫級別支持高性能的全文檢索,那麼你可以以如下SQL 方式去全文檢索了:
select * from xxxx where query='test;sort=attr_asc:group_id' AND ....;
很棒吧。
四、RoR支持也很棒
有一個acts_as_sphinx插件,類似acts_as_ferret,集成到RoR裡面很簡單。
Sphinx目前可能存在的問題估計還是中文分詞問題:
Sphinx支持UTF-8編碼的分詞,但是他自己的文檔上面說僅僅支持英文和俄文的分詞,因此我估計對中 文分詞可能還不能很好的支持。
總之,Sphinx是我們另外一個很棒的選擇。