python – 两个(多个)字段上的Django Haystack自动完成

我使用haystack 1.2.6和Whoosh 2.4以及Django 1.3.
假设我们有以下模型描述了一个假设的帖子.
Post(models.Model):
    title = models.CharField()
    body = models.TextField()

我们建立了这样的post索引,用于在body字段上自动完成:

PostIndex(SearchIndex):
    text = CharField(document=True,use_template=True)
    content_auto = indexes.EdgeNgramField(model_attr='body')

在彻底阅读了干草堆文档后,我无法找到是否可以在标题和正文字段上进行自动完成.

所以…是可能还是……?

解决方法

我已经设法基于 this执行此操作.您只需为要在索引中自动完成的每个字段创建EdgeNgramField,然后将自动完成应用于两个不同的搜索查询集并将它们连接起来:
sqs = SearchQuerySet().models(Post)
sqs1 = sqs.filter(title_auto=q)
sqs2 = sqs.filter(body_auto=q)

sqs = sqs1 | sqs2

如果你需要做额外的过滤,你需要在自动完成之后进行(至少这是它对我有用的唯一方法).

相关文章

功能概要:(目前已实现功能)公共展示部分:1.网站首页展示...
大体上把Python中的数据类型分为如下几类: Number(数字) ...
开发之前第一步,就是构造整个的项目结构。这就好比作一幅画...
源码编译方式安装Apache首先下载Apache源码压缩包,地址为ht...
前面说完了此项目的创建及数据模型设计的过程。如果未看过,...
python中常用的写爬虫的库有urllib2、requests,对于大多数比...