2009-12-23 61 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