3

有人可以向我展示如何使用 django-haystack 使用属性过滤全文搜索结果的示例吗?我浏览了他们网站上的教程,但仍然不确定如何使用 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)

如果我想提供标题和描述的全文搜索,以及类别和颜色的过滤(基于下拉列表,而不是自由文本) - 我需要做什么?可以使用 haystack 自带的表单和视图吗?

谢谢。

4

2 回答 2

6

你看过django-haystack 网站上的faceting 教程/文档吗?它将引导您完成基于Note入门教程中介绍的模型作者的过滤示例。

与 haystack 和搜索不同的另一个选项是django-filterAlex Gaynor,它允许您根据模型的内容而不是索引来过滤字段。因此,它可以用于未使用django-haystack. 您可以在此处查看存储库。doc 文件夹中有很好的文档,并且包含的​​测试展示了所有功能。

于 2009-12-24T08:06:50.053 回答
0

如果我们总结一下如何添加 haystack faceting

  1. 您需要将分面字段添加到索引模型
标题 = CharField(model_attr='title', faceted=True)
 description = CharField(model_attr='description', faceted=True)
  1. 将您的查询集更改为
  sqs = SearchQuerySet().facet('title').facet('description')
  1. 使用 haystack 在 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
于 2011-12-10T23:45:02.777 回答