首页 > 解决方案 > 提取的 json 列上的 MySQL 全文搜索

问题描述

我正在寻找使用 MySQL 的全文搜索和 json 列功能处理的特定场景的答案。

我将非结构化/无模式数据存储在要启用全文搜索的 json 列中。我相信每个人都知道 MySQL 不允许在 json 列上进行 FTS。但是有一些方法可以解决它,我已经确定了一个,但我不确定从长远来看它会产生什么影响。

许多人建议将需要搜索的数据复制到生成的列中。我不能这样做,因为正如我所说,我的数据没有任何架构,并且为所有可能性创建生成的列对我来说是不切实际的,它首先会破坏使用 json 的目的。

所以我考虑只使用一个生成的列,它从源 json 列中获取整个数据,并使用 MySQL 的 json_extract() 将其存储为 json 文本。这似乎工作正常,我对结果感到满意。但是,我不确定一件事。存储 json 文字意味着存储除了实际数据之外的其他冗余内容,例如属性键/名称。考虑到全文搜索的工作原理(倒排索引和所有),当数据开始增长时,这样的冗余信息会对搜索产生任何影响吗?不用担心用户尝试使用 json 键搜索数据,而是担心是否包含每行中的这些键是否会影响 FTS 性能?

最后一件事,是的,我已经完成了我的功课,我知道还有其他更好的方法来进行全文搜索,但是由于我的情况,我选择了这条路,我需要一个非常可靠的理由来研究替代解决方案。

标签: mysqlfull-text-search

解决方案


推荐阅读