【问题标题】:How to use two models for single index search in sphinx-django如何在 sphinx-django 中使用两个模型进行单索引搜索
【发布时间】:2018-02-23 11:35:38
【问题描述】:

我在我的 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" 匹配标题,则响应应该是 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'],}

感谢您的快速帮助。

【问题讨论】:

    标签: django search sphinx sphinxql django-sphinx


    【解决方案1】:

    对于 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

    【讨论】:

      猜你喜欢
      • 2014-10-02
      • 1970-01-01
      • 2010-10-24
      • 2019-08-16
      • 1970-01-01
      • 1970-01-01
      • 2012-07-15
      • 1970-01-01
      • 2015-09-21
      相关资源
      最近更新 更多