gpt4 book ai didi

python whoosh 索引大文件的时间太长

转载 作者:行者123 更新时间:2023-12-05 00:47:58 26 4
gpt4 key购买 nike

我有一个包含约 900 万行的 CSV 文件。我希望能够快速从该文件中搜索一行。我决定使用 python whoosh 来索引这些数据,然后搜索它,如下所示。

schema = Schema(content=TEXT(stored=True, analyzer=RegexTokenizer() | LowercaseFilter() | CharsetFilter(accent_map)))

if not os.path.exists("index"):
os.mkdir("index")
ix = create_in("index", schema)

ix = open_dir("index")

writer = ix.writer()

with open(file_path, 'r', encoding='utf-8') as file:
for line in file:
writer.add_document(content=line)

writer.commit()

我不确定这是否是索引数据的正确/最快方法。更改架构是否会使索引更快?如果不是,那么使用 whoosh 或其他索引库的一般想法是否适用于像这样的大文件?

好消息是索引只会执行一次,所以我愿意等待这是否会提供更快的搜索时间。我对全文搜索没有经验。有人会知道,通过我的设置,索引需要多长时间?

这是我的 csv 示例:

ID,TYPE,TEXT,ID2
1058895,1,Be,1067806
1058895,2,Hosl,101938
1058895,3,370,None
1058895,4,Tnwg,10582

最佳答案

你的方法很好。全文搜索的折衷是您将快速查询换成慢速索引,因此您尽可能多地预先完成工作。

与 Lucene 及其生态系统(Solr、Elasticsearch)相比,Whoosh 索引非常慢。通过在我的 PC 上进行的一些快速测试,它每秒索引大约 540 行。您可以预期在大约 4.5 到 5 小时内索引 900 万行。您添加的字段越多,尤其是要分析的字段,所需的时间就越长,因此请确保您只分析必要的字段并仅索引您需要的内容。

如果您计划多次查询此索引,那么在时间上的投入是值得的,而且您的查询应该相当快。如果您需要频繁地索引大文件并且不能每次都等待 5 个小时,那么请考虑切换到 Lucene、Solr 或 Elasticsearch。

您的数据似乎也很简单。如果精确的 bool 查询就足够了,Pandas 查询允许您更快地搜索 DataFrame。 Pandas 为基本文本处理提供了快速矢量化方法,您可以将其用于小写、停用词删除、字符映射和正则表达式等。

只有在需要词干提取和分词等评分和 NLP 功能时,才真正需要全文搜索。

关于python whoosh 索引大文件的时间太长,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54822978/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com