要澄清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