key_reverse_index.py 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. # -*- coding:utf-8 -*-
  2. import config
  3. import tools
  4. import mmap
  5. TITLE = "关键词倒排索引"
  6. def main():
  7. # 日志配置初始化
  8. tools.init_log()
  9. tools.log_start_msg(TITLE)
  10. # 关键词倒排索引容器
  11. key_reverse_index_cache = {}
  12. with open(config.KEY_REVERSE_FILE, "r", encoding=config.ENCODING_CHARSET) as freverse, \
  13. mmap.mmap(freverse.fileno(), 0, access=mmap.ACCESS_READ) as fmmap:
  14. # 总大小
  15. total_num = fmmap.size()
  16. while True:
  17. # 读取光标位置
  18. cur_pos = fmmap.tell()
  19. # 把光标移动到下一行
  20. line = fmmap.readline().decode(config.ENCODING_CHARSET)
  21. # 如果没有数据则结束
  22. if not line :
  23. break
  24. # 获取词根位置,建立词根和位置的关系
  25. index = line.index(",")
  26. key_reverse_index_cache[line[:index]]=cur_pos
  27. # 进度显示
  28. tools.tip_in_size(total_num, cur_pos)
  29. # 保存索引
  30. tools.save_obj(config.KEY_REVERSE_INDEX_CACHE, key_reverse_index_cache)
  31. tools.log_end_msg(TITLE)
  32. if __name__ == "__main__":
  33. main()