如何在 sphinx-django 中使用两个模型进行单个索引搜索
How to use two models for single index search in 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
我在我的 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