在大型字符串文件中查找部分字符串匹配的最有效方法(python)

2024-06-03 00:24:06 发布

您现在位置:Python中文网/ 问答频道 /正文

我下载了Wikipedia文章标题文件,其中包含了每个Wikipedia文章的名称。我需要搜索所有可能匹配的文章标题。例如,我可能有“hockey”这个词,但是我想要的Wikipedia关于曲棍球的文章是“Ice峎hockey”。它应该是一个不区分大小写的搜索。在

我使用的是Python,有没有比逐行搜索更有效的方法?我最好每分钟搜索500或1000次。如果一行一行是我唯一的选择,我可以在这里面做一些优化吗?在

我想文件里有几百万行。在

有什么想法吗?在

谢谢。在


Tags: 文件方法名称标题文章曲棍球wikipedia区分
3条回答

格雷格的回答是好的,如果你想匹配个别单词。如果你想在子串上匹配,你需要一些更复杂的东西,比如后缀树(http://en.wikipedia.org/wiki/Suffix_-tree). 一旦构造完成,后缀树就可以有效地回答对任意子字符串的查询,因此在您的示例中,当有人搜索“hock”时,它可以匹配“Ice_nuhockey”。在

如果您有一个固定的数据集和变量查询,那么通常的技术是将数据集重新组织为更容易搜索的内容。在抽象级别,您可以将每个文章标题分解为单独的小写单词,并将每个单词添加到Python字典数据结构中。然后,每当你得到一个查询,把查询词转换成小写,然后在字典中查找。如果每个字典条目值都是一个标题列表,那么您可以很容易地找到与给定查询词匹配的所有标题。在

这适用于直接的单词,但是您必须考虑是否要对相似的单词进行匹配,例如在查询为“smoke”时查找“smoking”。在

我建议您将数据放入sqlite数据库中,并使用SQL“like”运算符进行搜索。在

相关问题 更多 >