2024-06-03 00:24:06 发布
网友
我下载了Wikipedia文章标题文件,其中包含了每个Wikipedia文章的名称。我需要搜索所有可能匹配的文章标题。例如,我可能有“hockey”这个词,但是我想要的Wikipedia关于曲棍球的文章是“Ice峎hockey”。它应该是一个不区分大小写的搜索。在
我使用的是Python,有没有比逐行搜索更有效的方法?我最好每分钟搜索500或1000次。如果一行一行是我唯一的选择,我可以在这里面做一些优化吗?在
我想文件里有几百万行。在
有什么想法吗?在
谢谢。在
格雷格的回答是好的,如果你想匹配个别单词。如果你想在子串上匹配,你需要一些更复杂的东西,比如后缀树(http://en.wikipedia.org/wiki/Suffix_-tree). 一旦构造完成,后缀树就可以有效地回答对任意子字符串的查询,因此在您的示例中,当有人搜索“hock”时,它可以匹配“Ice_nuhockey”。在
如果您有一个固定的数据集和变量查询,那么通常的技术是将数据集重新组织为更容易搜索的内容。在抽象级别,您可以将每个文章标题分解为单独的小写单词,并将每个单词添加到Python字典数据结构中。然后,每当你得到一个查询,把查询词转换成小写,然后在字典中查找。如果每个字典条目值都是一个标题列表,那么您可以很容易地找到与给定查询词匹配的所有标题。在
这适用于直接的单词,但是您必须考虑是否要对相似的单词进行匹配,例如在查询为“smoke”时查找“smoking”。在
我建议您将数据放入sqlite数据库中,并使用SQL“like”运算符进行搜索。在
格雷格的回答是好的,如果你想匹配个别单词。如果你想在子串上匹配,你需要一些更复杂的东西,比如后缀树(http://en.wikipedia.org/wiki/Suffix_-tree). 一旦构造完成,后缀树就可以有效地回答对任意子字符串的查询,因此在您的示例中,当有人搜索“hock”时,它可以匹配“Ice_nuhockey”。在
如果您有一个固定的数据集和变量查询,那么通常的技术是将数据集重新组织为更容易搜索的内容。在抽象级别,您可以将每个文章标题分解为单独的小写单词,并将每个单词添加到Python字典数据结构中。然后,每当你得到一个查询,把查询词转换成小写,然后在字典中查找。如果每个字典条目值都是一个标题列表,那么您可以很容易地找到与给定查询词匹配的所有标题。在
这适用于直接的单词,但是您必须考虑是否要对相似的单词进行匹配,例如在查询为“smoke”时查找“smoking”。在
我建议您将数据放入sqlite数据库中,并使用SQL“like”运算符进行搜索。在
相关问题 更多 >
编程相关推荐