django-haystack返回意外结果

时间:2018-11-08 08:56:00

标签: python django elasticsearch django-haystack

我正在尝试将django-haystack集成到博客中。

这是我的Post模型:

class Post(models.Model):
    slug = models.CharField(max_length=2000)
    title = models.CharField(max_length=2000)
    content = models.TextField(blank=True)
    created_on = models.DateTimeField(auto_now_add=True)
    updated_on = models.DateTimeField(auto_now=True)
    user = models.ForeignKey(UserProfile, on_delete=models.CASCADE)

    def __str__(self):
        return self.title

以下是search_indexes.py文件中的代码:

class PostIndex(indexes.SearchIndex, indexes.Indexable):
    text = indexes.EdgeNgramField(document=True, use_template=True)
    title = indexes.CharField(model_attr='title')
    content = indexes.CharField(model_attr='content')


    def get_model(self):
        return Post

    def index_queryset(self, using=None):
        """Used when the entire index for model is updated."""
        return self.get_model().objects.filter(created_on__lte=datetime.datetime.now())

如您所见,我正在使用EdgeNgramField类型来搜索部分项。

现在,如果我按预期搜索术语elastic,则haystack会在elastictitle字段的某个地方返回包含content的帖子。但是,haystack还返回了一些其他帖子,这些帖子在elastictitle中都没有术语content

我该如何解决?

我已经在django-haystack(2.8.1),elasticsearch-2.4.2和django-1.11上测试了此代码

PS:这是我第一次接触弹性搜索。

0 个答案:

没有答案
相关问题