全文搜索引擎 XunSearch
關于 xunsearch
Xunsearch 是一個高性能、全功能的全文檢索解決方案。
Xunsearch 旨在幫助一般開發者針對既有的海量數據,快速而方便地建立自己的全文搜索引擎。
Xunsearch 中文譯名為“迅搜”,代碼中的經常被縮寫為 XS,既是英文名稱的縮略也是中文聲母縮寫。這兒的“迅”是快速的意思,至少包含了兩層涵義:其一代表了搜索結果的響應能力,其二則為二次開發難度、速度。
Xunsearch 采用結構化分層設計,包含后端服務、前端開發包兩大部分,層次清晰而不交叉。其中后端是采用 C/C++ 編寫的守護進程,而前端采用最為流行的腳本語言 PHP ,對于 web 搜索項目更為方便。具體參見架構設計。
Xunsearch 極大程度降低的搜索開發的難度,除了常規的中文分詞、字段檢索、布爾語法等功能外,還比其它免費的解決方案提供了用戶急需的相關搜索、拼音搜索、結果高亮、搜索建議等等。具體的清單請參見我們的功能列表。
Xunsearch 真正全面開源,并使用最流行的開源許可協議 GPL 發布。您可以免費獲取本項目的全部源代碼,自由的使用它,并在許可條件下修改和再分發,具體參見授權聲明文件。
特色和優勢
我們追求的最大特色是:快,搜索響應快,開發上手快。
-
支持海量數據,高速搜索響應,敬請參見 Xapian 里的 Scalability。據描述單庫最多支持 40 億條數據,在 500 萬網頁大約 1.5TB 的數據中,非緩存情況下檢索時間不超過 1 秒。
-
健壯的后端守護程序,內置緩存設計,事件模型基于 libevent。
-
內置專為搜索而自主開發的 scws 中文分詞,搜索效果好,又能保障查全率。
-
后端采用穩定高效的 C/C++ 開發,前端采用流行的 PHP 腳本語言,堪稱最佳組合。
-
極低的開發難度,接口簡單易用,而且文檔規范、全面。
-
與 Lucene, Sphinx 之類相比較,Xunsearch 提供了更豐富而必需的功能,開發周期更短。
-
功能強大,內置了大量只有商業、大型搜索引擎才提供的功能。支持包括字段檢索、結果高亮、字段排序、布爾語法、區間檢索、聚合搜索、相關搜索、權重微調、拼音搜索、搜索建議等等專業搜索引擎具備的功能。
1. 應用領域
前提是要有一定的 PHP (或其它對應的 SDK 語言) 開發能力,并備有 Unix 類型操作系統的服務器至少一臺。
Xunsearch 可以幫助您建立各種行業門戶/垂直搜索、BBS 論壇搜索、CMS/Web站內搜索、文檔/文獻資料檢索,以及各種基于現有數據庫系統的全文檢索。
2. 歷史淵源
大約在 2006 年創始人 hightman 開始了全文檢索的相關探索,先是發布了純 PHP 實現的中文分詞代碼,之后又推出了 MySQL/MyISAM 全文索引的中文分詞補丁 MyFT。經過一系列不斷完善和改進后,于 2007 年正式發布中文分詞項目 scws 并一直維護至今。
起初開發分詞的目的就是為了解決中文的全文檢索,全文檢索技術雖然已經趨于成熟,但多為商業產品。免費開源、并且要好用的還真難找了,于是萌動了自己開發全文檢索的念頭。2008 年推出了比較粗糙的搜索解決方案 FTPHP,之后于 2010 年又開啟了 Xungle 項目,直接免去各種技術需求,為用戶提供包含軟硬環境在內的搜索服務。
在 Xungle 項目的運作過程中,我們發現還有大量的用戶出于各種原因,不得不自行解決搜索技術。此外,我們發現了國外一個優秀的開源搜索引擎基礎庫 Xapian,它采用 C/C++ 開發,并且性能卓越,久經考驗。但是并沒有整合中文分詞,并且開發難度、復雜度也較大。于是我們下決心整合 Xapian 和 Scws,并在此基礎上提供更多、更常用的搜索功能。這就是 Xunsearch
,目前版本發布正在準備中,代碼也已托管到 github 中。
3. 開發團隊
本項目由杭州云圣網絡科技公司創立并維護,同時也是唯一就 Xunsearch 提供相應的商業技術服務、支持的公司。
4. 致謝
是大量 xungle 用戶的提議促使我們開啟 xunsearch 項目,Xunsearch 的往后發展將離不開廣大用戶的支持,還要特別感謝在此其間義務參與 xunsearch 內測的一些朋友。
Xunsearch 底層采用 C/C++ 編寫,其中用到了許多其它優秀項目,在線特別感謝它們的團隊和作者。主要有以下幾個:
- xapian-core 這是 Xunsearch 的底層索引設計方案
- scws 默認內置的中文分詞解決方案
- libevent 后端服務器的事件處理模型
- nginx 搜索服務器的設計借鑒了 nginx 的方式,采用多進程、多線程混合用于處理高并發請求
- Yii 非常優秀的 PHP 開發框架,xunsearch 官網采用該框架,文檔組織形式也參考自 Yii