【发布时间】:2013-02-22 22:48:43
【问题描述】:
这就是我现在的情况:
- 我有一个 2.5MB 的文本文件,其中包含大约 250k 个字符串,按字母顺序排序
- 每个字符串都是唯一的
- 我不需要修改文本文件中的条目:文本文件一旦加载,就永远不会被编辑
- 文本文件在开始时加载,然后我只需要通过它搜索字符串
最后一点是问题。实际上我需要搜索字符串的完全匹配和部分匹配。我写的算法只是涉及使用正则表达式并结合一些尝试使过程更快:例如,我将识别字母表中单数字母的字典索引硬编码到我的脚本中,然后拆分大文本文件虚构成 26 个小字典。 那完全没用,脚本仍然非常慢。 浏览了这里的一些帖子,我被说服尝试 mmap:但在给定正则表达式的情况下,找到所有部分匹配项看起来毫无用处。 最终我得出结论,尝试可以解决我的问题,尽管我几乎不知道这是什么。我应该尝试吗?如果是这样,我应该如何继续在 python 中创建 trie? Is marisa-trie module good?谢谢大家
编辑:通过“部分匹配”,我的意思是我有一个字符串的前缀。我不需要在结尾或中间匹配,只需要在开头。
【问题讨论】:
-
请详细说明您所说的部分匹配是什么意思。
-
是的,是部分匹配每个字符串的前缀,还是包含每个字符串的任何子字符串?如果匹配需要是子字符串,则构建 trie 将无济于事。
-
如果您需要在字符串的中间或末尾匹配,Trie 不会帮助您:
-
@user1068051 你可以试试 whoosh 库。您可以搜索确切的字符串或通配符搜索