使用属性的Django-haystack结果过滤?

时间:2009-12-23 23:30:21

标签: django solr full-text-search django-haystack

有人可以向我展示如何使用属性过滤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附带的表单和视图吗?

感谢。

2 个答案:

答案 0 :(得分:6)

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

与干草堆和搜索分开的另一个选项是Alex Gaynor的django-filter,它允许您根据模型的内容而不是索引来过滤字段。因此,它可以用于未使用django-haystack索引的模型。您可以查看存储库here。 doc文件夹中有很好的文档,包含的测试显示了所有功能。

答案 1 :(得分:0)

如果我们总结如何添加干草堆分面

  1. 您需要将分面字段添加到索引模型
  2.  title =  CharField(model_attr='title', faceted=True)
     description =  CharField(model_attr='description', faceted=True)
    
    1. 将您的查询集更改为
    2.   sqs = SearchQuerySet().facet('title').facet('description')
      
      1. 使用分页版本的搜索表单并在urls.py中使用此
      2. 查看haystack提供的内容
          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. 重建索引以查看分面效果

        3.  
             python manage.py rebuild_index