假设我有一个Django模型:
Post-表示博客帖子 标记-表示规范标记。让我们假装它是一个标签。 PostTag-Post和标记之间的外键中介
现在让我们假设我有5篇贴子带有这些标签:
#食物#故事#点心#园艺#主菜
#食物#故事#馅饼#火腿#三明治
#食物#故事#花#鱼#寿司
#食物#故事#电脑#键盘#鼠标
#食物#咖啡#维生素#罗勒#柑橘
--
给定带有5个标签的帖子1,我如何才能得到N个标签最相似的帖子
Posts.objects.filter(publish_at__gte=somedatetime).order_by("similarity")
您可以^{} 每个} 标记。然后,可以使用带注释的字段进行排序
Post
使用其与当前帖子匹配的^{添加一个切片
[:5]
将一个LIMIT 5
添加到查询中(如果我们只对5个最相似的帖子感兴趣的话)此示例基于一个简单的模型定义:
解决方案之一可能是编写自定义ModelManager,它使用
difflib.get_close_matches()
过滤其他帖子(您需要转换为字符串列表或类似内容)或者更简单的解决方案,但我不确定你会得到你需要的;使用Django中“Q”对象中的
icontains
进行过滤,并将它们组合起来相关问题 更多 >
编程相关推荐