python - MySQL 存储和搜索文本
问题描述
假设我们有大约 3M 的文档,每页一页。我想导入 MySQL 数据库中的所有文本。对于我正在阅读的内容,我可以将其添加为文本字段(65535 个字符)。我面临的挑战是,我们每天都会收到与我们拥有的一份 3M 文件略有或相同的文件。当输入文本不相同时,是否有一种方法或结构可以在 MySQL 文本中搜索文本块?我需要知道我们是否有一份或多份文件与收到的文件非常匹配。在一个完美的世界中,我希望得到一个与搜索文本更接近的结果......
由此产生的机制可能包括 MySQL 和 Python 作为解决方案。我找不到任何地方可以做到这一点的最佳方法,而且不需要永远搜索。
[2020-09-29 编辑] 从我目前的发现来看,对于这类问题来说,使用 Elasticsearch 似乎是一个很好的方向,就像 sabik 指出的那样。
[2020-12-14 编辑] 我们终于尝试了 ElasticSearch,这绝对是一个很好的解决方案。我们发现不完美的一件事是我们想要在文档中搜索,但是如果没有文档足够接近,我们希望获得相似的分数,看起来这不是它的工作方式。它总是返回一个文档并且分数是无关紧要的。我们可能会手动比较与搜索文档的最佳匹配,以获得我们自己的相似度分数。
解决方案
前段时间我尝试用 MySQL 做这样的事情,然后我发现了 SQL SERVER FILESTREAM。
我将文档保存在二进制类型 varbinary(max) 的字段中,它占用的空间更少,搜索速度非常快。
或许现在大家可以看看MySQL有没有类似FILESTREAM的东西,我最近没研究过。
推荐阅读
- php - mysql 结果到正确的分组 json
- dataframe - 在 pyspark 上保留中间副本的同时过滤数据帧
- python - 地图字典查找
- r - 我如何知道何时在 R 中的 riskratio() 函数中使用 rev = "something other than both"?
- javascript - 每个单词的首字母大写
- c++ - unordered_map 与带有 int 键的向量
- css - Photoshop 样式在 CSS 中看起来不同 - 我不知道为什么,有什么解决方案吗?
- python - 如何将灰度图像转换为具有 x、y 和像素强度值的 csv 文件?
- java - 如何在 EditText 中更改图像大小?
- mapbox - 为什么 Geoserver 返回带有覆盖范围限制的 404 响应?