python – 两个(多个)字段上的Django Haystack自动完成
发布时间:2020-12-16 23:32:01 所属栏目:Python 来源:网络整理
导读:我使用Haystack 1.2.6和Whoosh 2.4以及Django 1.3. 假设我们有以下模型描述了一个假设的帖子. Post(models.Model): title = models.CharField() body = models.TextField() 我们建立了这样的post索引,用于在body字段上自动完成: PostIndex(SearchIndex): te
我使用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 如果你需要做额外的过滤,你需要在自动完成之后进行(至少这是它对我有用的唯一方法). (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |