RM新时代网站-首页

電子發(fā)燒友App

硬聲App

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示
創(chuàng)作
電子發(fā)燒友網(wǎng)>電子資料下載>電子資料>wwsearch企業(yè)微信檢索引擎

wwsearch企業(yè)微信檢索引擎

2022-06-21 | zip | 31.72 MB | 次下載 | 2積分

資料介紹

授權(quán)協(xié)議 BSD
開(kāi)發(fā)語(yǔ)言 C/C++
操作系統(tǒng) 跨平臺(tái)
軟件類型 開(kāi)源軟件
所屬分類 手機(jī)/移動(dòng)開(kāi)發(fā)、 微信開(kāi)發(fā)/微信公眾號(hào)開(kāi)發(fā)

軟件簡(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í)在線用戶檢索。

功能介紹

  1. 實(shí)時(shí)數(shù)據(jù)修改:數(shù)據(jù)寫(xiě)入即實(shí)時(shí)可查。對(duì)外提供插入、更新、刪除、覆蓋寫(xiě)等接口,可適應(yīng)更新頻繁場(chǎng)景,也適應(yīng)于少改或不改場(chǎng)景。
  2. 支持靈活Query:支持詞的等值、前綴、模糊匹配。多個(gè)Query通過(guò)And 、Or進(jìn)行組合,滿足不同場(chǎng)景的檢索需求。Query還可以按指定field進(jìn)行檢索。
  3. 后置過(guò)濾:支持對(duì)檢索索引后的結(jié)果進(jìn)行二次過(guò)濾,支持等值、數(shù)值范圍、數(shù)組元素查找、字符串模糊等過(guò)濾特性。適用于如無(wú)法建立高區(qū)分度索引的字段過(guò)濾、帶有業(yè)務(wù)特定場(chǎng)景的過(guò)濾。
  4. 靈活排序:支持按多個(gè)field的屬性值組合排序,類似order by語(yǔ)義。
  5. 檢索功能可擴(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è)接口,分別是:

  1. AddDocuments:僅當(dāng)文檔id不存在時(shí)添加;
  2. UpdateDocuments:僅當(dāng)文檔id存在時(shí)更新;更新時(shí)會(huì)保留舊文檔存在的未更新field內(nèi)容;
  3. AddOrUpdateDocuments:若文檔id不存在則添加,若存在則更新;
  4. ReplaceDocuments:僅當(dāng)文檔id存在時(shí)替換;
  5. DeleteDocuments:僅當(dāng)文檔id存在時(shí)刪除;
  6. 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ō)明:

  1. TableID : bussiness_type(uint8_t) + partition_set(uint64_t)組成,分表;
  2. DocumentID : uint64_t,文檔id,文檔的唯一標(biāo)識(shí);
  3. 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ō)明:

  1. TableID : bussiness_type(uint8_t) + partition_set(uint64_t)組成,分表;
  2. Query :構(gòu)建查詢的字段信息,可支持AndQuery和OrQuery的嵌套格式,支持PrefixQuery前綴查詢;參考
  3. Filter :過(guò)濾器,支持?jǐn)?shù)字/字符串/數(shù)組/多字符串條件過(guò)濾;
  4. SortCondition :對(duì)查詢得到的文檔輸出做排序,支持指定field做排序,目前只支持指定數(shù)字的field排序;
  5. 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_* .

編譯完成將可以看到:

  1. wwsearch_ut : 單元測(cè)試;
  2. 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)題,可以有以下途徑反饋:

  1. 直接在[issues]提問(wèn);

開(kāi)源協(xié)議

wwsearch 開(kāi)源協(xié)議為 Apache License Version 2.0 ,詳細(xì)的 License 請(qǐng)參考?LICENSE.TXT

?

下載該資料的人也在下載 下載該資料的人還在閱讀
更多 >

評(píng)論

查看更多

下載排行

本周

  1. 1山景DSP芯片AP8248A2數(shù)據(jù)手冊(cè)
  2. 1.06 MB  |  532次下載  |  免費(fèi)
  3. 2RK3399完整板原理圖(支持平板,盒子VR)
  4. 3.28 MB  |  339次下載  |  免費(fèi)
  5. 3TC358743XBG評(píng)估板參考手冊(cè)
  6. 1.36 MB  |  330次下載  |  免費(fèi)
  7. 4DFM軟件使用教程
  8. 0.84 MB  |  295次下載  |  免費(fèi)
  9. 5元宇宙深度解析—未來(lái)的未來(lái)-風(fēng)口還是泡沫
  10. 6.40 MB  |  227次下載  |  免費(fèi)
  11. 6迪文DGUS開(kāi)發(fā)指南
  12. 31.67 MB  |  194次下載  |  免費(fèi)
  13. 7元宇宙底層硬件系列報(bào)告
  14. 13.42 MB  |  182次下載  |  免費(fèi)
  15. 8FP5207XR-G1中文應(yīng)用手冊(cè)
  16. 1.09 MB  |  178次下載  |  免費(fèi)

本月

  1. 1OrCAD10.5下載OrCAD10.5中文版軟件
  2. 0.00 MB  |  234315次下載  |  免費(fèi)
  3. 2555集成電路應(yīng)用800例(新編版)
  4. 0.00 MB  |  33566次下載  |  免費(fèi)
  5. 3接口電路圖大全
  6. 未知  |  30323次下載  |  免費(fèi)
  7. 4開(kāi)關(guān)電源設(shè)計(jì)實(shí)例指南
  8. 未知  |  21549次下載  |  免費(fèi)
  9. 5電氣工程師手冊(cè)免費(fèi)下載(新編第二版pdf電子書(shū))
  10. 0.00 MB  |  15349次下載  |  免費(fèi)
  11. 6數(shù)字電路基礎(chǔ)pdf(下載)
  12. 未知  |  13750次下載  |  免費(fèi)
  13. 7電子制作實(shí)例集錦 下載
  14. 未知  |  8113次下載  |  免費(fèi)
  15. 8《LED驅(qū)動(dòng)電路設(shè)計(jì)》 溫德?tīng)栔?/a>
  16. 0.00 MB  |  6656次下載  |  免費(fèi)

總榜

  1. 1matlab軟件下載入口
  2. 未知  |  935054次下載  |  免費(fèi)
  3. 2protel99se軟件下載(可英文版轉(zhuǎn)中文版)
  4. 78.1 MB  |  537798次下載  |  免費(fèi)
  5. 3MATLAB 7.1 下載 (含軟件介紹)
  6. 未知  |  420027次下載  |  免費(fèi)
  7. 4OrCAD10.5下載OrCAD10.5中文版軟件
  8. 0.00 MB  |  234315次下載  |  免費(fèi)
  9. 5Altium DXP2002下載入口
  10. 未知  |  233046次下載  |  免費(fèi)
  11. 6電路仿真軟件multisim 10.0免費(fèi)下載
  12. 340992  |  191187次下載  |  免費(fèi)
  13. 7十天學(xué)會(huì)AVR單片機(jī)與C語(yǔ)言視頻教程 下載
  14. 158M  |  183279次下載  |  免費(fèi)
  15. 8proe5.0野火版下載(中文版免費(fèi)下載)
  16. 未知  |  138040次下載  |  免費(fèi)
RM新时代网站-首页