Sphinx(獅身人面像)是俄國人開發的高性能搜索引擎,以極速索引、原生 MySQL 整合、優異並發著稱。本文詳細評測其特性與中文分詞短板,作為 JavaEye 3.0 技術選型參考。
通過配置文件直接讀取 MySQL/PostgreSQL 建索引,無需應用層代碼配合。以 Daemon 進程運行,支持分佈式檢索,並發響應極佳。大量 Ferret 用戶因並發瓶頸遷移至 Sphinx。
SphinxSE 可編譯進 MySQL 內核,實現 SQL 級全文檢索:
SELECT * FROM xxxx WHERE query='test;sort=attr_asc:group_id' AND ...;
應用層零依賴,極大簡化架構。
`acts_as_sphinx` 插件使用方式與 `acts_as_ferret` 幾乎一致,遷移成本極低。
官方文檔明確僅支持英文和俄文分詞。UTF-8 編碼雖可通過,但缺乏中文分詞擴展機制,純 C 實現難以注入 Ruby/Jieba 等分詞邏輯。這對中文社區類網站是不可接受的硬傷。
Sphinx 是除中文分詞外近乎完美的方案。若項目以英文為主或可接受簡單單字拆分,強烈推薦;中文重度依賴場景需謹慎評估或尋找分詞補丁方案。