【问题标题】:Search in extremely large files (Open Academic Graph / Microsoft Academic Graph)在超大文件中搜索(Open Academic Graph / Microsoft Academic Graph)
【发布时间】:2020-11-25 16:54:58
【问题描述】:

我下载了三个不同的 MAG (Microsoft-Academic Graph)-文件

  1. MAG 场地 (~ 10GB)
  2. MAG 论文 (~ 30GB)
  3. MAG 作者 (~ 30GB)

来自Open Academic Graph

现在我想从 MAG-Paper-Files 中的 MAG-Authors-File 中搜索 ID,以获取有关作者出版物的更多信息 (~30GB)。

问题是:

我尝试使用 Python 搜索文件中的 ID,例如:

import ast
import timeit

with open("/Users/xyxz/Downloads/mag_authors_2/mag_authors_10.txt") as f:
    for line in f:
        xy = ast.literal_eval(line)
        if(xy["id"] == "2806941709"):
            print(xy)

时间:85 秒

有人可以帮助我提高搜索性能吗? C 还是 C++ 更快?

【问题讨论】:

  • C 可能(很有可能)更快,
  • 为什么不使用操作系统自带的工具,也许是grep
  • @JCWasmx86 感谢您的回答。
  • @PaulMcKenzie,我需要一个脚本/可执行文件。给出例如作者姓名/作者ID/等以获取信息。
  • 创建sql数据库。在那里插入数据(这需要一段时间,但只完成一次)。然后创建查询。由于数据库有索引,速度会更快。

标签: c# c++ c python-3.x microsoft-graph-api


【解决方案1】:
  1. 您可以将一个大文件拆分为多个内容,通过多个线程在每个内容中搜索。
  2. 使用已编译的正则表达式或 KMP 搜索算法。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多