| 應用 - 安裝 - 開發 - 文件 - 深度學習 - FAQ - TIPS - EA半小時 - 技術專題 |
kumo search
是一個端對端搜尋引擎框架,支援全文檢索、倒排索引、正排索引、排序、快取、索引分層、幹預系統、特徵收集、離線計算、儲存系統等功能。 kumo search
運行在EA
(Elastic automic infrastructure architecture) 平台上,支援在多機房、多集群上實現工程自动化
、服务治理
、实时数据
、服务降级与容灾
等功能。
隨著網路的發展,全網搜尋不再是獲取資訊的唯一途徑。很多垂直的資訊服務,如電商、社群、新聞等,都有自己的搜尋引擎。 這些搜尋引擎的特點是:資料量中等,業務複雜,使用者體驗要求高。這些搜尋引擎的開發,需要大量的工程和演算法支援。 kumo search
旨在提供一套開箱即用的搜尋引擎框架,幫助使用者快速建立自己的搜尋引擎。在這個框架上,使用者可以透過專案內的AOT編譯器,用python
編寫業務邏輯,框架會自動產生c++
程式碼,並產生二進位動態函式庫,動態更新到搜尋引擎中。從而實現搜尋引擎的快速迭代。
序號 | 專案名 | 說明 | 說明 |
---|---|---|---|
1 | collie | 引用外部header only library 如jason,toml等,統一管理 | |
2 | turbo | hash,log,容器類,字串相關操作 | |
3 | melon | rpc通訊 | |
4 | alkaid | 檔案系統封裝、本機文件,hdfs,s3等 | 檔案系統統一api,zlib,lz4,zst unified api |
5 | mizar | 基於rocksdb,toplingdb儲存引擎內核 | 待開發wisekey功能,暫時先用rocksdb官方版本 |
6 | alioth玉衡 | 表格記憶體 | 開發中 |
7 | megrez天權 | 資料集讀寫 | hdf5 cvs bin已完成,待封裝高級c++api |
8 | phekda | 統一向量引擎存取api UnifiedIndex,簡化接口 | 支援snapshot,過濾插件 |
9 | merak天璇 | 綜合搜尋引擎內核 | 待開發 |
10 | dubhe 天樞 | nlp內核 | 待開發 |
11 | flare | gpu、cpu高維張量計算,等計算 | |
12 | theia | 基於opengl圖形影像顯示,服務端不可用(無顯示設備) | |
13 | dwarf | jupyter協定c++內核 | |
14 | exodus | hercules and other jupyter應用 | 完成 |
15 | hercules | python aot編譯器 | |
16 | carbin | c++套件管理器,cmake生成器 | 完成 |
17 | carbin-template | cmake模板庫 | 完成 |
18 | carbin-recipes | carbin recipes 依賴庫自訂配置 | 完成 |
18 | hadar | suggest 搜尋建議服務內核 | 接近完成,商用不開源 |
19 | neptune | ea 前端服務 | 開發中 |
序號 | 專案名 | 說明 | 進度 |
---|---|---|---|
1 | sirius | EA元資料伺服器服務發現,全域時鐘服務,全域設定服務,全域 id服務 | 完成 |
2 | polaris | 向量引擎單機服務 | 完成 |
3 | elnath | 綜合搜尋引單機服務 | 開發中 |
4 | vega | 向量引擎資料庫叢集版 | 完成商用不開源 |
5 | arcturus | 綜合搜尋引擎集群版 | 開發中商用不開源 |
6 | pollux | 綜合引擎業務控制台 | 開發中商用不開源 |
7 | capella | ltr排序服務 | 開發中商用不開源 |
8 | aldebaran | suggest搜尋建議服務集群 | 開發中商用不開源 |
9 | nunki | nlp服務 | 開發中商用不開源 |
半小時系列, 專注於基於EA
基礎設施快速搭建企業級應用服務,專注於實際操作,快速上手,快速開發,快速部署,快速迭代。
**本專題主要介紹搜尋引擎的基礎知識,以及隨著搜尋技術和搜尋業務的發展,搜尋架構的演進,升級和設計,以及背後的技術原理和實現。 **
EA
是服務端應用的基礎架構, EA
目前支援centos
和ubuntu
兩種作業系統, mac
系統目前在開發中, 盡可能支援mac
系統。但目前並沒有嘗試,為方便編譯和ide開發,後續部分功能可能進行嘗試相容。基礎環境部署請參考安裝與使用
EA
體系的cicd
使用carbin工具進行管理。 carbin
是一個c++
套件管理器, cmake
產生器, cicd
工具。 carbin
可以下載第三方依賴函式庫, 產生cmake
建置系統,進行工程編譯與部署。 carbin
的使用請參考carbin docs
carbin | conda | cmake | CPM | conan | bazel | |
---|---|---|---|---|---|---|
使用複雜度 | easy | middle | hard | middle | hard | hard |
安裝難度 | pip easy | binary easy | NA easy | cmake | pip easy | binary hard |
依賴模式 | source/binary | binary | source | source | source/binary | source |
依賴樹 | support | support | support | support | support | support |
本地原始碼 | support | NA | support | support | NA | support |
相容性 | good | middle | good | good | good | poor |
速度 | good | middle | poor | poor | good | poor |
conda是個不錯的管理工具,沒有選擇conda,是因為conda的編譯依賴項比較複雜,而且編譯選項常常會出現問題,不太適合c++工程的編譯。 cmake自備的管理工具,較不適合大型工程的管理,每次重新編譯專案可能導致重新下載依賴函式庫,編譯時間過長。 CPM是c++套件管理器,同樣,在國內的網路環境下,下載依賴函式庫速度較慢,較不適合大型工程的管理。 conan是c++套件管理器,但是conan的依賴函式庫下載速度較慢,不太適合大型工程的管理。
同時carbin也是非常適合c++工程的管理,carbin能夠快速生成c++專案管理cmake體系,統一了專案編譯過程,選項配置,以及編譯後安裝導出的變數規則, EA
體系的專案可以透過固定規則find_package
找到專案和項目對象.當時也適合任何基於cmake
的項目使用。
如果基於docker開發, EA
提供了已經基礎開發ea inf容器:
centos7-openssl11-python-310-gcc-9.3:
lijippy/ea_inf:c7_base_v1