比如mysql中存储的大量的文章,除了 like 匹配搜索以外。还有没有其他高效的方法搜索包含某一词的文章?
如果文章是以文件的方法存储的,如何高效的查找出包含某一词的文章呢?
比如mysql中存储的大量的文章,除了 like 匹配搜索以外。还有没有其他高效的方法搜索包含某一词的文章?
如果文章是以文件的方法存储的,如何高效的查找出包含某一词的文章呢?
假设你说的大量,在假设无限大的情况下,不管采取什么优化mysql的办法收货都是有限的,可以考虑一个'热点key'的问题,就是把热词前置到缓存(如redis)中,热词与你mysql中文章或者什么的主键做关联,那么逻辑就是先查询缓存得到对应主键id再去读mysql。
或者换库用es。
4 回答1.5k 阅读✓ 已解决
8 回答1.3k 阅读
3 回答1.1k 阅读✓ 已解决
3 回答878 阅读✓ 已解决
2 回答745 阅读✓ 已解决
2 回答1.7k 阅读
2 回答1.6k 阅读
首先,存储文章这种非结构化数据不太适合用 mysql,建议换一个 nosql 的数据库。
其次,全文搜索如果你想自己搞,大体原理是分词、统计词频、建立索引,这样每次只需要查找索引就行了,会快很多。当然也有成熟的工具,比如开源的 ElasticSearch,很多公司都在用。
想要效果更好,可以来个 NLP + 协同过滤做混合推荐,牛逼哄哄,做到这一步大厂会花百万年薪挖你。
最后,存在文件里是不可能的,磁盘物理操作效率太低。骚年,这种方式在你出生之前就淘汰了。