首页 > 代码库 > 后端程序员之路 34、Index搜索引擎实现分析3-对文章索引的两层分块
后端程序员之路 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
后端程序员之路 34、Index搜索引擎实现分析3-对文章索引的两层分块