如何在大量文章中根据关键字搜索出相关文章?

比如mysql中存储的大量的文章,除了 like 匹配搜索以外。还有没有其他高效的方法搜索包含某一词的文章?
如果文章是以文件的方法存储的,如何高效的查找出包含某一词的文章呢?

阅读 5.3k
5 个回答

首先,存储文章这种非结构化数据不太适合用 mysql,建议换一个 nosql 的数据库。
其次,全文搜索如果你想自己搞,大体原理是分词、统计词频、建立索引,这样每次只需要查找索引就行了,会快很多。当然也有成熟的工具,比如开源的 ElasticSearch,很多公司都在用。
想要效果更好,可以来个 NLP + 协同过滤做混合推荐,牛逼哄哄,做到这一步大厂会花百万年薪挖你。
最后,存在文件里是不可能的,磁盘物理操作效率太低。骚年,这种方式在你出生之前就淘汰了。

假设你说的大量,在假设无限大的情况下,不管采取什么优化mysql的办法收货都是有限的,可以考虑一个'热点key'的问题,就是把热词前置到缓存(如redis)中,热词与你mysql中文章或者什么的主键做关联,那么逻辑就是先查询缓存得到对应主键id再去读mysql。
或者换库用es。

我们场景是走es,mysql数据同步到es

可以考虑 Elasticsearch,现在基本是主流的搜索引擎服务了。

Elasticsearch 或者 solr

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题