2009-12-23 62 views
3

有人可以告诉我一个如何用django-haystack使用属性过滤全文搜索结果的例子吗?我在他们的网站上查看了教程,但我仍然很确定如何使用干草堆。使用属性的Django-haystack结果过滤?

举例来说,假设我有一个 类产品:

class Product(models.Model): 
    title = models.CharField(max_length=200) 
    description = models.TextField() 
    category = models.CharField(max_length=10) 
    color = models.CharField(max_length=10) 

如果我想提供标题&说明全文检索,并 过滤(基于下拉列表,而不是自由文本)在类别和 颜色 - 我需要做什么?我可以使用干草堆附带的表格和视图吗?

谢谢。

回答

6

您是否看过django-haystack网站上的tutorial/documentation?它会引导您根据入门教程中介绍的Note模型的作者进行过滤。

Alex Haynor提供的另一种与大海捞针和搜索不同的选项是django-filter,它允许您根据模型内容而不是索引过滤字段。因此,它可用于未与django-haystack索引的型号。您可以检出版本库here。 doc文件夹中有很好的文档,所包含的测试显示了所有功能。

1

如果我们总结一下如何添加草垛刻面

  1. 需要多方面领域的指数模型添加
 
title = CharField(model_attr='title', faceted=True) 
description = CharField(model_attr='description', faceted=True) 
  1. 改变您的查询集到
 
    sqs = SearchQuerySet().facet('title').facet('description') 
  1. 使用面搜索形式的版本,并查看草垛提供urls.py使用这种
 
    url(r'^$', FacetedSearchView(form_class=FacetedSearchForm, searchqueryset=sqs), name='haystack_search'), 
  1. 加刻面部分模板这样http://docs.haystacksearch.org/dev/faceting.html#display-the-facets-in-the-template

  2. 重建索引看到切面效果

 
    python manage.py rebuild_index