key_reverse_index.py 1.5 KB

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