<acronym id="s8ci2"><small id="s8ci2"></small></acronym>
<rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
<acronym id="s8ci2"></acronym>
<acronym id="s8ci2"><center id="s8ci2"></center></acronym>

電子發燒友App

硬聲App

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示
電子發燒友網>電子資料下載>電子資料>wwsearch企業微信檢索引擎

wwsearch企業微信檢索引擎

2022-06-21 | zip | 31.72 MB | 次下載 | 免費

資料介紹

授權協議 BSD
開發語言 C/C++
操作系統 跨平臺
軟件類型 開源軟件
所屬分類 手機/移動開發、 微信開發/微信公眾號開發

軟件簡介

wwsearch簡介

wwsearch是企業微信后臺自研的全文檢索引擎。它為海量用戶下的全文快速檢索而設計,底層支持可插拔的lsm tree存儲引擎。目前覆蓋企業微信所有在線檢索場景:企業員工通訊錄、審批、日報、周報、匯報、企業素材檢索,也包括企業郵箱的全文郵件檢索。 最大業務場景有300+億條記錄,索引詞項萬億+,存儲容量幾十TB,支撐實時在線用戶檢索。

功能介紹

  1. 實時數據修改:數據寫入即實時可查。對外提供插入、更新、刪除、覆蓋寫等接口,可適應更新頻繁場景,也適應于少改或不改場景。
  2. 支持靈活Query:支持詞的等值、前綴、模糊匹配。多個Query通過And 、Or進行組合,滿足不同場景的檢索需求。Query還可以按指定field進行檢索。
  3. 后置過濾:支持對檢索索引后的結果進行二次過濾,支持等值、數值范圍、數組元素查找、字符串模糊等過濾特性。適用于如無法建立高區分度索引的字段過濾、帶有業務特定場景的過濾。
  4. 靈活排序:支持按多個field的屬性值組合排序,類似order by語義。
  5. 檢索功能可擴展:場景需要時,可以擴展各類聚合函數(sum/avg…),也可以支持場景文本打分。

實現剖析

接口說明

具體使用例子參考example/example.cpp。 這里簡單對接口字段進行說明。

Index

主要涉及6個接口,分別是:

  1. AddDocuments:僅當文檔id不存在時添加;
  2. UpdateDocuments:僅當文檔id存在時更新;更新時會保留舊文檔存在的未更新field內容;
  3. AddOrUpdateDocuments:若文檔id不存在則添加,若存在則更新;
  4. ReplaceDocuments:僅當文檔id存在時替換;
  5. DeleteDocuments:僅當文檔id存在時刪除;
  6. AddDocumentsWithoutRead:文檔id不存在則添加,存在則覆蓋;

下面以用戶常用的AddOrUpdateDocuments為例說明用法。

// 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_;
    ...
}

用戶使用涉及主要字段說明:

  1. TableID : bussiness_type(uint8_t) + partition_set(uint64_t)組成,分表;
  2. DocumentID : uint64_t,文檔id,文檔的唯一標識;
  3. IndexField : 文檔列的信息,包括列屬性和值。
    • field_id_,field的ID
    • field_flag_,索引標記
      • kTokenizeFieldFlag,是否分詞
      • kStoreFieldFlag,是否存儲原始數據
      • kDocValueFieldFlag,是否存儲列值屬性
      • kSuffixBuildFlag,是否后綴展開
      • 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)

用戶使用涉及主要字段說明:

  1. TableID : bussiness_type(uint8_t) + partition_set(uint64_t)組成,分表;
  2. Query :構建查詢的字段信息,可支持AndQuery和OrQuery的嵌套格式,支持PrefixQuery前綴查詢;參考
  3. Filter :過濾器,支持數字/字符串/數組/多字符串條件過濾;
  4. SortCondition :對查詢得到的文檔輸出做排序,支持指定field做排序,目前只支持指定數字的field排序;
  5. min_match_filter_num設置最小匹配的filter數,只要匹配的filter大于此數的文檔才能輸出。

構建方法

依賴模塊說明

依賴模塊為:

# wwsearch/deps/
protobuf-2.4.1
snappy-1.0.4
rocksdb-v5.16.6
tokenizer-mmseg

倉庫中已提前編譯生成依賴庫,您也可以根據編譯環境重新編譯依賴的第三方模塊。

構建方法:

需要使用支持c++ 11的編譯環境構建

mkdir build
cd build
cmake  ..
make -j32
cp ../deps/tokenizer/etc/wwsearch_* .

編譯完成將可以看到:

  1. wwsearch_ut : 單元測試;
  2. wwsearch_example : 簡單示例,包括index和query。

接下來可以愉快使用啦,enjoy it!

貢獻代碼

提交pull request貢獻代碼前,請參考?Contributing.md?。?wwsearch基于c++11開發,遵循Google C++ Style Guide代碼風格,提交代碼前需要使用附帶的.clang-format格式化代碼;

反饋問題

使用中遇到問題,可以有以下途徑反饋:

  1. 直接在[issues]提問;

開源協議

wwsearch 開源協議為 Apache License Version 2.0 ,詳細的 License 請參考?LICENSE.TXT

?

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

評論

查看更多

下載排行

本周

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

本月

  1. 1OrCAD10.5下載OrCAD10.5中文版軟件
  2. 0.00 MB  |  234315次下載  |  免費
  3. 2555集成電路應用800例(新編版)
  4. 0.00 MB  |  33566次下載  |  免費
  5. 3接口電路圖大全
  6. 未知  |  30323次下載  |  免費
  7. 4開關電源設計實例指南
  8. 未知  |  21549次下載  |  免費
  9. 5電氣工程師手冊免費下載(新編第二版pdf電子書)
  10. 0.00 MB  |  15349次下載  |  免費
  11. 6數字電路基礎pdf(下載)
  12. 未知  |  13750次下載  |  免費
  13. 7電子制作實例集錦 下載
  14. 未知  |  8113次下載  |  免費
  15. 8《LED驅動電路設計》 溫德爾著
  16. 0.00 MB  |  6656次下載  |  免費

總榜

  1. 1matlab軟件下載入口
  2. 未知  |  935054次下載  |  免費
  3. 2protel99se軟件下載(可英文版轉中文版)
  4. 78.1 MB  |  537798次下載  |  免費
  5. 3MATLAB 7.1 下載 (含軟件介紹)
  6. 未知  |  420027次下載  |  免費
  7. 4OrCAD10.5下載OrCAD10.5中文版軟件
  8. 0.00 MB  |  234315次下載  |  免費
  9. 5Altium DXP2002下載入口
  10. 未知  |  233046次下載  |  免費
  11. 6電路仿真軟件multisim 10.0免費下載
  12. 340992  |  191187次下載  |  免費
  13. 7十天學會AVR單片機與C語言視頻教程 下載
  14. 158M  |  183279次下載  |  免費
  15. 8proe5.0野火版下載(中文版免費下載)
  16. 未知  |  138040次下載  |  免費
亚洲欧美日韩精品久久_久久精品AⅤ无码中文_日本中文字幕有码在线播放_亚洲视频高清不卡在线观看
<acronym id="s8ci2"><small id="s8ci2"></small></acronym>
<rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
<acronym id="s8ci2"></acronym>
<acronym id="s8ci2"><center id="s8ci2"></center></acronym>