Haystack Django一次搜索多个字段



使用elasticsearch(2.x(、django haystack(2.8.0(、drf haystak(1.8.6(构建搜索。一切都很好,只是我不能同时搜索多个字段。现在,我只能搜索像(url(/search/?title=test/search/?text=test这样的特定字段。每个url都会得到正确的结果,但只针对指定的字段。

所需的结果是/search/?q=test返回标题和文本的匹配项,以包含搜索查询">test"。

下面我添加了搜索模型的搜索索引。

class ModelIndex(indexes.SearchIndex, indexes.Indexable):
text = indexes.CharField(document=True, use_template=True)
title = indexes.CharField(model_attr='title', boost=2.5)
slug = indexes.CharField(model_attr='slug')
site_id = indexes.IntegerField()
def get_model(self):
return Model
def prepare_text(self, obj):
return obj.text
def prepare_site_id(self, obj):
return obj.site.id
def index_queryset(self, using=None):
# Used when the entire index for model is updated.
return self.get_model().objects.all().filter(date__lte=datetime.datetime.now())

我使用一个包含标题和文本字段的模板解决了这个问题。示例(model_text.txt(:

{{object.title}}
{{object.text}}

因此,文本字段包含一个字符串,两个字段都是其值,因此在像/search/?text=test一样搜索时都会搜索到这两个字段。

最新更新