从零开始构建搜索引擎
我有一个MySQL数据库,里面大约有1万篇文章,随着时间的推移,这个数字可能还会增加。我想能够搜索这些文章,并根据一些关键词提取出最相关的结果。我知道有很多项目可以直接用来实现这个功能。不过,我的应用场景非常简单,我希望能直接控制整个过程,并了解它是如何运作的。因此,我想从零开始用Python构建一个非常简单的搜索引擎。
说实话,我甚至不知道从哪里开始。我可以把MySQL数据库里的所有内容都放到一个列表里,然后根据相关性对这个列表进行排序,但这样做似乎会很慢,而且随着数据库中的内容增多,速度会越来越慢。我也可以使用一些基本的MySQL搜索,先找出最相关的100个结果,然后再对这100个结果进行排序。但这是一种两步走的方式,可能效率不高,而且如果有一篇文章稍微超出范围,我可能会错过它。
我可以采取哪些最佳方法来解决这个问题呢?
2 个回答
0
如果你不介意把MySQL数据库换成其他的东西,我建议你试试elasticsearch,配合pyes来使用。
这个工具有你想要的搜索引擎功能,比如全文搜索、性能很好、分页显示、相似内容推荐、可以自定义评分算法,而且是实时的——也就是说,当你添加更多数据时,搜索结果会立刻更新。
如果你不想去掉现在的数据库,也可以让它们并行运行,把MySQL当作主数据库使用。
3
如果你想为这10,000篇文章做一个“搜索引擎”,最好的办法就是看看托比·塞加兰(Toby Segaran)写的《编程集体智能》这本书。这本书非常好看,为了节省你的时间,可以直接翻到2007年8月的第4章。