【问题标题】:Haystack search with foreign key使用外键进行干草堆搜索
【发布时间】:2013-07-07 16:46:04
【问题描述】:

我正在构建一个 Django 应用程序,用户可以在其中根据帖子标题或内容中出现的关键字搜索其他人的博客。我了解 Haystack 是进行此类搜索的不错选择。

但是,我还希望用户能够通过他们“关注”的博客过滤结果,这些博客存储为用户和博客之间的多对多关系。由于 Haystack 后端不存储外键关系,我有什么选择?

我是新手,所以我想到了以下选项,这些选项可能不是最有效的。

  1. 在所有博客中搜索给定关键字以获得一组帖子结果。然后在数据库中查询所有关注的博客,并通过关键字结果对其进行过滤。
    如果关键字搜索中有很多、数千个结果,我不确定这会有多好。

  2. 将关注博客的用户的 ID 添加到所有博客文章的内容中。然后搜索匹配关键字和登录用户ID的帖子。
    这会导致大量数据重复,并且看起来像是一个肮脏的黑客攻击。

是否有任何标准方法可以将外键查询与文本搜索查询结合起来?

谢谢。

【问题讨论】:

    标签: django django-haystack


    【解决方案1】:

    你需要干草堆MultiValueField。检查示例here

    【讨论】:

    • 为什么不干脆做:SearchQuerySet().filter(blog_id__in=[1,5,9]).filter(text='hello') 其中blog_idPostIndex 类中的一个字段
    猜你喜欢
    • 2012-05-22
    • 2013-09-23
    • 1970-01-01
    • 2018-04-04
    • 2012-03-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-07
    相关资源
    最近更新 更多