如何在sphinx-django中使用两个模型进行单索引搜索

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在sphinx-django中使用两个模型进行单索引搜索相关的知识,希望对你有一定的参考价值。

我在django项目中使用django-sphinxql来满足搜索需求。我想在我的应用程序中使用两个模型进行一些查询搜索。型号如下所示

Class Model1(models.Model):
    name = models.CharField(max_length=50)
    model2 = models.ForeignKey(Model2, on_delete=models.CASCADE)

Class Model2(models.Model):
    caption = models.CharField(max_length=50)

我想启用上面的名称和标题字段搜索,以便返回任何匹配项的Model1,例如如果query =“abc”匹配caption,则响应应该是Model1,我将如何实现我为Model1创建的索引,但不知道如何在Model2中添加标题。我的Model1索引如下

class Model1Index(indexes.Index):
    name = fields.Text(model_attr='name')
    class Meta:
        model = Model1
        settings.INDEXES['source_params'] = {'sql_field_string': ['name'],}

快速帮助表示赞赏。

答案

对于Sphinx中的外键字段,我们可以使用双下划线(__)指向特定字段以进行索引。用户model_attr为此

在上面的例子中

class Model1Index(indexes.Index): name = fields.Text(model_attr='name') caption = fields.Text(model_attr='model2__caption') class Meta: model = Model1 settings.INDEXES['source_params'] = {'sql_field_string': ['name'],}

可以定义。

参考http://django-sphinxql.readthedocs.io/en/latest/indexes.html

以上是关于如何在sphinx-django中使用两个模型进行单索引搜索的主要内容,如果未能解决你的问题,请参考以下文章

[Mongoose]如何在 app.js 中使用两个不同的模式两次使用相同的模型

SNPE - 如何预测具有两个(或更多)输入的模型?

如何在一个视图中使用两个 IEnumerable 模型?

如何将两个不同的训练有素的 ML 模型组合为一个?

如何在同一模型中进行 has_many 和 has_one 关联?

推荐收藏保存和加载机器学习模型的这两个方法不错