Django:过滤与给定项目相似的项目

Django: Filter Items similar to given Item

我有一个 django 后端 (Postgre DB)。

假设给定的 table,比如说 A,有一个名为 'message' 的字符字段。现在,我想要做的是找到 A 中与给定实例的 'message' 字段具有相似 'message' 的所有项目。相似性将基于某种算法。 TL;DR 我想根据项目之间的相似性查找项目。

问题分为 3 个部分:

  1. 我该怎么做?我可以实时(慢)做吗?还是我必须预先计算 table A 中所有项目之间的相似性。(这可能会炸毁我的数据库)

  2. 如何找到 'message' 字段之间的相似性?请注意,该项目更像是一个 400 个字符 post 而不是一组关键字。我遇到过许多计算字符串距离的算法,但我认为这不会削减它。我认为 TF-IDF 后接余弦相似度更合适。

  3. 如何在生产设置中实现上述目标?至于应该使用什么数据结构来优化请求响应时间与存储。

这可能会成功:

http://django-haystack.readthedocs.org/en/v2.4.1/searchqueryset_api.html#more-like-this

SearchQuerySet.more_like_this(self, model_instance)

您可以传入模型的实例,以获取类似的结果。