【问题标题】:More than one index field in self.prepared_dataself.prepared_data 中有多个索引字段
【发布时间】:2012-03-22 03:32:07
【问题描述】:

我在 Django 中使用 Haystack 和 Whoosh,我试图通过以下代码创建索引:

class LivroIndex(SearchIndex):
    text = CharField(document=True, use_template=True)
    autor = CharField(model_attr='Autor')
    titulo =  CharField(model_attr='Titulo')
    datalivro = DateTimeField(model_attr='DataLivro')


    def index_queryset(self):
        return Livro.objects.filter(DataLivro__lte=datetime.datetime.now())


    def prepare(self, obj):
        self.prepared_data = super(LivroIndex, self).prepare(obj)
        self.prepared_data['text'] = obj.Autor
        return self.prepared_data

Livro 是我的模型文件中的一个类。

通过这种方式,您可以只使用“auto”作为用户可用于在应用程序内搜索内容的字段。有没有其他方法可以让它接受多个字段?

提前致谢!

【问题讨论】:

    标签: python django django-haystack whoosh


    【解决方案1】:

    使用模板并添加您希望在搜索中找到的字段

    喜欢

    {{ object.autor }}
    {{ object.titulo  }}
    {{ object.datalivro }}
    

    【讨论】:

    • 我的问题更多在于 Haystack 用于搜索内核的方法,而不是模板。这工作正常并且工作了一次,但前提是我搜索作者。如果我尝试搜索书名,它不起作用,因为该字段不在“准备”方法中。
    【解决方案2】:

    您应该在text 字段中连接所有要搜索的字段。通常您通过模板而不是通过prepare 方法来执行此操作。有关说明,请参阅the tutorial

    【讨论】:

    • 我已经看过并完成了这个教程,为了解决Haystack无法找到自己搜索结果的问题,您必须准备好要搜索的字段。我想要一个可以准备多个字段的表达式或命令。
    猜你喜欢
    • 2011-03-22
    • 2010-09-17
    • 1970-01-01
    • 2019-09-13
    • 2015-11-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-12
    相关资源
    最近更新 更多