使用PostgreSQL进行Django全文搜索,跨越多个不同的模型。

问题描述 投票:0回答:1

我需要对多个不同的模型进行FTS。我想在搜索结果中得到任何模型类型。

我想按等级对结果进行排序,以获得最相关的结果。我可以一个一个地搜索,但不知道如何将结果结合起来,尤其是保留排名的相关性。

这里是模型,它的例子来自制作查询手册页面。

class Blog(models.Model):
    name = models.CharField(max_length=100)
    tagline = models.TextField()


class Author(models.Model):
    name = models.CharField(max_length=200)
    email = models.EmailField()


class Entry(models.Model):
    blog = models.ForeignKey(Blog, on_delete=models.CASCADE)
    headline = models.CharField(max_length=255)
    body_text = models.TextField()
    pub_date = models.DateField()
    mod_date = models.DateField()
    authors = models.ManyToManyField(Author)
    number_of_comments = models.IntegerField()
    number_of_pingbacks = models.IntegerField()
    rating = models.IntegerField()
django postgresql full-text-search
1个回答
0
投票

你可以把你的多个查询集组合成一个类似这样的东西。

from itertools import chain

blogs = Blog.objects.filter(...)
authors = Author.objects.filter(...)
entries = Entry.objects.search(...)

chain = chain(blog_results, lesson_results, profile_results)
qs = sorted(chain, key=lambda instance: instance.pk, reverse=True)
© www.soinside.com 2019 - 2024. All rights reserved.