• 后端程序员之路 34、Index搜索引擎实现分析3-对文章索引的两层分块


    # part_indexer 对文章根据id的hash进行分块索引
    - 持有 search_index _inc_index[2]; search_index _history_index[2]; 进行实际的搜索操作
    - get_size 调用search_index的search
    - get_all_items 调用search_index的get_all_items
    - search 根据条件获取一批文章
        - 传入user_profile_t、search_params_t、filter_judge用于搜索
        - 传入p_scoring用于打分,当搜索结果多于search_params._count时根据scores取前面的文章
    - get_item
        - 传入doc_id,调用search_index的get_item获取文章
        - 执行search_index.get_forward_index_ptr()->filter_ids()

    # search_index 对文章根据语言、地域、类型进行分块索引
    - 持有 index_box _index_box; IndexBoxes _index_boxes;
        - get_items _index_box.get_items(docid_vect, result, filters)
        - get_all_items _index_box.get_all_items
    - 持有 std::map<std::string, uint32_t> _language_pool,_region_pool,_type_pool
    - inc_data、insert_doc 添加文章
        - 区分文章的LANGUAGE、REGION、TYPE,拼成字符串进行hash作为key
        - _index_boxes[key].insert_doc(doc); 或者 _index_boxes.insert({key, box});
        - _index_box.insert_doc(doc);
    - search
        - generate_keylist search_params->keylist
        - foreach cit in keylist
            - fit = _index_boxes.find( *cit );
            - fit._inverted_index.trigger

  • 相关阅读:
    Linux 文件权限
    Linux 查看磁盘使用情况
    绑定到外部验证服务LDAP、配置 autofs
    创建逻辑卷
    查找一个字符串
    查找用户目录下的指定文件
    配置NTP时间服务器
    通过Roslyn构建自己的C#脚本(更新版)(转)
    Elon Musk
    可能改变世界的13个“终结”(上)
  • 原文地址:https://www.cnblogs.com/zapline/p/6697531.html
Copyright © 2020-2023  润新知