zoukankan      html  css  js  c++  java
  • 后端程序员之路 35、Index搜索引擎实现分析4-最终的正排索引与倒排索引

    # 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

  • 相关阅读:
    布隆过滤器(Bloom Filter)详解
    css-鼠标经过图片效果
    css-卡牌反转(两个内容)
    wow 属性
    小常识
    裁剪图片
    js电梯导航效果
    banner缓慢缩小过渡效果
    css——鼠标经过按钮时样式
    redis面试题redis的lru算法实现到手写lru算法
  • 原文地址:https://www.cnblogs.com/zapline/p/6702243.html
Copyright © 2011-2022 走看看