首页 > 解决方案 > MySQL 存储和搜索文本

问题描述

假设我们有大约 3M 的文档,每页一页。我想导入 MySQL 数据库中的所有文本。对于我正在阅读的内容,我可以将其添加为文本字段(65535 个字符)。我面临的挑战是,我们每天都会收到与我们拥有的一份 3M 文件略有或相同的文件。当输入文本不相同时,是否有一种方法或结构可以在 MySQL 文本中搜索文本块?我需要知道我们是否有一份或多份文件与收到的文件非常匹配。在一个完美的世界中,我希望得到一个与搜索文本更接近的结果......

由此产生的机制可能包括 MySQL 和 Python 作为解决方案。我找不到任何地方可以做到这一点的最佳方法,而且不需要永远搜索。

[2020-09-29 编辑] 从我目前的发现来看,对于这类问题来说,使用 Elasticsearch 似乎是一个很好的方向,就像 sabik 指出的那样。

[2020-12-14 编辑] 我们终于尝试了 ElasticSearch,这绝对是一个很好的解决方案。我们发现不完美的一件事是我们想要在文档中搜索,但是如果没有文档足够接近,我们希望获得相似的分数,看起来这不是它的工作方式。它总是返回一个文档并且分数是无关紧要的。我们可能会手动比较与搜索文档的最佳匹配,以获得我们自己的相似度分数。

标签: pythonmysqlelasticsearch

解决方案


前段时间我尝试用 MySQL 做这样的事情,然后我发现了 SQL SERVER FILESTREAM。

我将文档保存在二进制类型 varbinary(max) 的字段中,它占用的空间更少,搜索速度非常快。

或许现在大家可以看看MySQL有没有类似FILESTREAM的东西,我最近没研究过。


推荐阅读