資料介紹
軟件簡(jiǎn)介
wwsearch
簡(jiǎn)介
wwsearch
是企業(yè)微信后臺(tái)自研的全文檢索引擎。它為海量用戶下的全文快速檢索而設(shè)計(jì),底層支持可插拔的lsm tree
存儲(chǔ)引擎。目前覆蓋企業(yè)微信所有在線檢索場(chǎng)景:企業(yè)員工通訊錄、審批、日?qǐng)?bào)、周報(bào)、匯報(bào)、企業(yè)素材檢索,也包括企業(yè)郵箱的全文郵件檢索。 最大業(yè)務(wù)場(chǎng)景有300+億條記錄,索引詞項(xiàng)萬(wàn)億+,存儲(chǔ)容量幾十TB,支撐實(shí)時(shí)在線用戶檢索。
功能介紹
- 實(shí)時(shí)數(shù)據(jù)修改:數(shù)據(jù)寫(xiě)入即實(shí)時(shí)可查。對(duì)外提供插入、更新、刪除、覆蓋寫(xiě)等接口,可適應(yīng)更新頻繁場(chǎng)景,也適應(yīng)于少改或不改場(chǎng)景。
- 支持靈活Query:支持詞的等值、前綴、模糊匹配。多個(gè)Query通過(guò)And 、Or進(jìn)行組合,滿足不同場(chǎng)景的檢索需求。Query還可以按指定field進(jìn)行檢索。
- 后置過(guò)濾:支持對(duì)檢索索引后的結(jié)果進(jìn)行二次過(guò)濾,支持等值、數(shù)值范圍、數(shù)組元素查找、字符串模糊等過(guò)濾特性。適用于如無(wú)法建立高區(qū)分度索引的字段過(guò)濾、帶有業(yè)務(wù)特定場(chǎng)景的過(guò)濾。
- 靈活排序:支持按多個(gè)field的屬性值組合排序,類似order by語(yǔ)義。
- 檢索功能可擴(kuò)展:場(chǎng)景需要時(shí),可以擴(kuò)展各類聚合函數(shù)(sum/avg…),也可以支持場(chǎng)景文本打分。
實(shí)現(xiàn)剖析
接口說(shuō)明
具體使用例子參考example/example.cpp
。 這里簡(jiǎn)單對(duì)接口字段進(jìn)行說(shuō)明。
Index
主要涉及6個(gè)接口,分別是:
- AddDocuments:僅當(dāng)文檔id不存在時(shí)添加;
- UpdateDocuments:僅當(dāng)文檔id存在時(shí)更新;更新時(shí)會(huì)保留舊文檔存在的未更新field內(nèi)容;
- AddOrUpdateDocuments:若文檔id不存在則添加,若存在則更新;
- ReplaceDocuments:僅當(dāng)文檔id存在時(shí)替換;
- DeleteDocuments:僅當(dāng)文檔id存在時(shí)刪除;
- AddDocumentsWithoutRead:文檔id不存在則添加,存在則覆蓋;
下面以用戶常用的AddOrUpdateDocuments
為例說(shuō)明用法。
// wwsearch/index_writer.h
bool AddOrUpdateDocuments(const TableID &table,
std::vector &documents,
std::string *store_buffer = nullptr,
SearchTracer *tracer = nullptr);
// wwsearch/document.h
class DocumentUpdater {
...
Document new_document_;
...
};
class Document {
...
std::vector fields_;
DocumentID document_id_;
...
};
// wwsearch/index_field.h
class IndexField {
...
FieldID field_id_;
IndexFieldFlag field_flag_;
kIndexFieldType field_type_;
uint64_t numeric_value_;
std::string string_value_;
...
}
用戶使用涉及主要字段說(shuō)明:
- TableID : bussiness_type(uint8_t) + partition_set(uint64_t)組成,分表;
- DocumentID : uint64_t,文檔id,文檔的唯一標(biāo)識(shí);
-
IndexField : 文檔列的信息,包括列屬性和值。
- field_id_,field的ID
-
field_flag_,索引標(biāo)記
- kTokenizeFieldFlag,是否分詞
- kStoreFieldFlag,是否存儲(chǔ)原始數(shù)據(jù)
- kDocValueFieldFlag,是否存儲(chǔ)列值屬性
- kSuffixBuildFlag,是否后綴展開(kāi)
- kInvertIndexFieldFlag,是否建立倒排索引
-
field_type_,值類型
- kUint32IndexField
- kUint64IndexField
- kStringIndexField
- numeric_value_/ string_value_,字段原始值
Query
主要涉及接口:
// wwsearch/searcher.h
SearchStatus DoQuery(const TableID &table, Query &query, size_t top,
std::vector *filter,
std::vector *sorter,
std::list &docs,
uint32_t min_match_filter_num = 0)
用戶使用涉及主要字段說(shuō)明:
- TableID : bussiness_type(uint8_t) + partition_set(uint64_t)組成,分表;
- Query :構(gòu)建查詢的字段信息,可支持AndQuery和OrQuery的嵌套格式,支持PrefixQuery前綴查詢;參考
- Filter :過(guò)濾器,支持?jǐn)?shù)字/字符串/數(shù)組/多字符串條件過(guò)濾;
- SortCondition :對(duì)查詢得到的文檔輸出做排序,支持指定field做排序,目前只支持指定數(shù)字的field排序;
- min_match_filter_num設(shè)置最小匹配的filter數(shù),只要匹配的filter大于此數(shù)的文檔才能輸出。
構(gòu)建方法
依賴模塊說(shuō)明
依賴模塊為:
# wwsearch/deps/
protobuf-2.4.1
snappy-1.0.4
rocksdb-v5.16.6
tokenizer-mmseg
倉(cāng)庫(kù)中已提前編譯生成依賴庫(kù),您也可以根據(jù)編譯環(huán)境重新編譯依賴的第三方模塊。
構(gòu)建方法:
需要使用支持c++ 11的編譯環(huán)境構(gòu)建
mkdir build
cd build
cmake ..
make -j32
cp ../deps/tokenizer/etc/wwsearch_* .
編譯完成將可以看到:
- wwsearch_ut : 單元測(cè)試;
- wwsearch_example : 簡(jiǎn)單示例,包括index和query。
接下來(lái)可以愉快使用啦,enjoy it!
貢獻(xiàn)代碼
提交pull request貢獻(xiàn)代碼前,請(qǐng)參考?Contributing.md?。?wwsearch
基于c++11開(kāi)發(fā),遵循Google C++ Style Guide代碼風(fēng)格,提交代碼前需要使用附帶的.clang-format
格式化代碼;
反饋問(wèn)題
使用中遇到問(wèn)題,可以有以下途徑反饋:
- 直接在[issues]提問(wèn);
開(kāi)源協(xié)議
wwsearch 開(kāi)源協(xié)議為 Apache License Version 2.0 ,詳細(xì)的 License 請(qǐng)參考?LICENSE.TXT
- 基于曼哈頓哈希等的三段式圖像檢索方法 5次下載
- 基于蛻變測(cè)試的用戶搜索引擎性能分析 9次下載
- PHP教程之PHP動(dòng)態(tài)網(wǎng)頁(yè)怎么轉(zhuǎn)換成HTML 3次下載
- 微信小程序如何開(kāi)發(fā)?微信小程序教程視頻常用組件API開(kāi)發(fā)項(xiàng)目實(shí)戰(zhàn) 88次下載
- 基于JAVA技術(shù)的搜索引擎的研究與實(shí)現(xiàn)
- 主題搜索引擎的研究
- 一種基于DotLucene搜索引擎的自動(dòng)答疑系統(tǒng)
- Lucene算法優(yōu)化及其在P2P檢索中的應(yīng)用
- 化工搜索引擎索引庫(kù)的研究和實(shí)現(xiàn)
- 一個(gè)實(shí)用型智能化元搜索引擎的設(shè)計(jì)與實(shí)現(xiàn)
- 教育網(wǎng)BBS搜索引擎設(shè)計(jì)與實(shí)現(xiàn)
- 問(wèn)答式信息檢索中模式優(yōu)化及性能評(píng)價(jià)
- 原創(chuàng)優(yōu)先的搜索引擎排序算法
- 維、哈、柯全文搜索引擎檢索器的關(guān)鍵技術(shù)
- 基于網(wǎng)格技術(shù)的并行搜索引擎
- 谷歌搜索引擎優(yōu)化的各個(gè)方面和步驟 695次閱讀
- Mysql索引是什么東西?索引有哪些特性?索引是如何工作的? 946次閱讀
- 使用Rust語(yǔ)言重寫(xiě)的代碼搜索引擎黑鳥(niǎo)系統(tǒng)Blackbird正式啟用 695次閱讀
- 一個(gè)基于GPT-4的代碼搜索引擎,開(kāi)源了! 1186次閱讀
- 如何使用Python直接給微信推送消息 1852次閱讀
- 大數(shù)據(jù)是如何優(yōu)化企業(yè)搜索引擎 2167次閱讀
- 中控智慧科技企業(yè)微信云考勤簡(jiǎn)介 2694次閱讀
- 中控智慧科技企業(yè)微信考勤機(jī)WX108介紹 9647次閱讀
- 對(duì)講機(jī)和微信的區(qū)別在哪里?為什么微信,手機(jī)不能取代對(duì)講機(jī)? 1w次閱讀
- 基于深度學(xué)習(xí)技術(shù),從頭開(kāi)始搭建圖像語(yǔ)義搜索引擎 4814次閱讀
- 騰訊微信翻譯團(tuán)隊(duì)開(kāi)源的人工智能圍棋項(xiàng)目 PhoenixGo 5788次閱讀
- Python開(kāi)發(fā)微信公眾號(hào)教程來(lái)了 9816次閱讀
- 垂直搜索引擎是什么_垂直搜索引擎有哪些 7790次閱讀
- 微信智能硬件開(kāi)放平臺(tái)_微信硬件平臺(tái)怎么接入 1.9w次閱讀
- 基于微信平臺(tái)的體重健康管理系統(tǒng)設(shè)計(jì) 3171次閱讀
下載排行
本周
- 1山景DSP芯片AP8248A2數(shù)據(jù)手冊(cè)
- 1.06 MB | 532次下載 | 免費(fèi)
- 2RK3399完整板原理圖(支持平板,盒子VR)
- 3.28 MB | 339次下載 | 免費(fèi)
- 3TC358743XBG評(píng)估板參考手冊(cè)
- 1.36 MB | 330次下載 | 免費(fèi)
- 4DFM軟件使用教程
- 0.84 MB | 295次下載 | 免費(fèi)
- 5元宇宙深度解析—未來(lái)的未來(lái)-風(fēng)口還是泡沫
- 6.40 MB | 227次下載 | 免費(fèi)
- 6迪文DGUS開(kāi)發(fā)指南
- 31.67 MB | 194次下載 | 免費(fèi)
- 7元宇宙底層硬件系列報(bào)告
- 13.42 MB | 182次下載 | 免費(fèi)
- 8FP5207XR-G1中文應(yīng)用手冊(cè)
- 1.09 MB | 178次下載 | 免費(fèi)
本月
- 1OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費(fèi)
- 2555集成電路應(yīng)用800例(新編版)
- 0.00 MB | 33566次下載 | 免費(fèi)
- 3接口電路圖大全
- 未知 | 30323次下載 | 免費(fèi)
- 4開(kāi)關(guān)電源設(shè)計(jì)實(shí)例指南
- 未知 | 21549次下載 | 免費(fèi)
- 5電氣工程師手冊(cè)免費(fèi)下載(新編第二版pdf電子書(shū))
- 0.00 MB | 15349次下載 | 免費(fèi)
- 6數(shù)字電路基礎(chǔ)pdf(下載)
- 未知 | 13750次下載 | 免費(fèi)
- 7電子制作實(shí)例集錦 下載
- 未知 | 8113次下載 | 免費(fèi)
- 8《LED驅(qū)動(dòng)電路設(shè)計(jì)》 溫德?tīng)栔?/a>
- 0.00 MB | 6656次下載 | 免費(fèi)
總榜
- 1matlab軟件下載入口
- 未知 | 935054次下載 | 免費(fèi)
- 2protel99se軟件下載(可英文版轉(zhuǎn)中文版)
- 78.1 MB | 537798次下載 | 免費(fèi)
- 3MATLAB 7.1 下載 (含軟件介紹)
- 未知 | 420027次下載 | 免費(fèi)
- 4OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費(fèi)
- 5Altium DXP2002下載入口
- 未知 | 233046次下載 | 免費(fèi)
- 6電路仿真軟件multisim 10.0免費(fèi)下載
- 340992 | 191187次下載 | 免費(fèi)
- 7十天學(xué)會(huì)AVR單片機(jī)與C語(yǔ)言視頻教程 下載
- 158M | 183279次下載 | 免費(fèi)
- 8proe5.0野火版下載(中文版免費(fèi)下載)
- 未知 | 138040次下載 | 免費(fèi)
評(píng)論
查看更多