# index_box 提供搜索功能的实现
- 持有std::vector<ITEM> _buffer; 存储所有文章信息
- 持有ForwardIndex _forward_index;
    - _forward_index.build_findex( _buffer )
    - get_all_items _forward_index.get_all_items
    - get_items _forward_index.get_items(docid_vect, result, filters);
    - get_item _forward_index.get_item
- 持有InvertedIndex _inverted_index;
    - _inverted_index.build_iindex( _forward_index.get_forword_index() );
    - search _inverted_index.trigger(docid_result, working_vect, docid_set, user_profile, search_params);

# ForwardIndex 正排索引(正向索引)
- 持有boost::unordered_map<uint64_t, ITEM> _id2docitem
- 持有boost::unordered_map<uint64_t, filter_t> _id2filter;
- 持有boost::unordered_map<uint64_t, bool> _blacklist;
- build_findex
    - 已删除的文章从_id2docitem、_id2filter删除,加入到_blacklist
    - 更新黑名单,把已更新的文章从_blacklist删除
    - 已过期文章加入_blacklist,从_id2docitem、_id2filter删除
    - 加入新文章或者更新后的文章到_id2docitem、_id2filter
- get_all_items 返回_id2docitem的数据
- get_item 返回_id2docitem.find
- get_items 处理filters,然后_id2docitem.find
- filter_ids 根据FilterJudge和search_params_t对文章进行过滤

# InvertedIndex 倒排索引(反向索引)
- boost::unordered_map<uint64_t, docid_vect_t > inverted_index_t; 从key到文章数组的映射
- std::vector<inverted_index_t> multi_inverted_index_t; 多个从key到文章数组的映射
- 内置
- build_iindex
    - 建立category、keyword、topic、ventity等到docid的索引
    - 对数据的vector根据打分进行排序
- trigger
    - 构造working_vect,用于整个流程放置文章集
    - 进行一系列的trigger_by_features
        - 从一系列特征找到一系列文章vect
        - 找到的文章进行union_insert,合并到working_vect
    - 进行一系列的trigger_or_keys
        - 基本同trigger_by_features
    - 对working_vect里的文章进行check_intersection,即匹配更多and/no操作,得到最终docid_vect

最新文章

  1. 代码中使用StoryBoard和DoubleAnimation的方法
  2. Theano: CNMeM is disabled, CuDNN not available
  3. 如何创建和发布.asmx Web Service
  4. 各种vpn协议介绍(重点介绍sslvpn的实现方式openvpn)
  5. 查看linux系统的开机时间/重启历史记录
  6. Qt探秘——谈ui文件的用法
  7. DOS批处理的字符串功能
  8. Zepto.js-表单方法
  9. 开源的API集成测试工具 v0.1.2 - 增强体验
  10. java+sql 编码 UTF-8、ISO-8859-1、GBK
  11. 对于多线程下Servlet以及Session的一些理解
  12. IIS 错误代码
  13. mysql 分库分表 ~ ShardingSphere生态圈
  14. python全栈开发 * mysql * 180828
  15. AIDL通信过程中设置死亡代理
  16. 利用vue写一个复选框的组件
  17. Systen,IO
  18. SSM的配置文件
  19. jQuery 设置/获取样式
  20. glob

热门文章

  1. CF-1440C2 Binary Table (Hard Version) (构造,模拟)
  2. Educational Codeforces Round 91 (Rated for Div. 2) B. Universal Solution
  3. hdu2157 How many ways??
  4. POJ - 1654 利用叉积求三角形面积 去 间接求多边形面积
  5. DSC注册Agent失败- InternalServerError
  6. 通过k8s部署dubbo微服务并接入ELK架构
  7. Oracle数据库故障处理方法
  8. Raven1渗透实战
  9. swiper &amp; swiper slider
  10. Emmet &amp; VSCode