要澄清celopes answer,django-haystack的工作方式是讓您爲每個模型定義一個渲染的「文檔」。
所以說,你有一些車型...
class Teacher(mdoels.Model):
name = models.CharFiel(max_length=100)
class Course(models.Model):
name = models.CharField(max_length=100)
teacher = models.ForeignKey(Teacher)
class Student(models.Model):
name = models.CharFiel(max_length=100)
grade = models.IntegerField()
classes = models.ManyToManyField(Course, related_name='students')
class Grade(models.Model):
value = models.CharField(max_length=1)
course = models.ForeignKey(Course)
student = models.ForeignKey(Student, related_name='grades')
在草堆裏,你會定義一個模板呈現課程...
{% comment %} In this context 'object' represents a Course model {% endcomment %}
<h1>{{ object.name }}</h1>
<h2>{{ object.teacher.name }}</h2>
<ul>
{% for student in object.students %}
<li>{{ student.name }}</li>
{% endfor %}
</ul>
這樣你之類的定義不僅是一個「文件」,表示每門課程的模式,但你也指定了基於HTML標記信息優先級(H1更重要比比這更重要的h2)。
在使用草堆管理命令呈現開銷這些「證件」的方面...
\> manage.py reindex
通過這種方式,你可以seutp一個cron /調度工作,在你熟悉的任何間隔時間,以重新編制。
Solr還包含一些整潔的東西,如拼寫建議,以及所有那些整潔的東西。我最初嘗試了帶有乾草堆的飛快移動,但卻用尖括號包含連字符做了一些有趣的事情。 Haystack + Solr是一個很好的組合。
這正是我現在正在做的。另一方面,我擔心,因爲這將是一個高流量的網站。 – chefsmart 2009-10-22 04:29:34