是否使用Django-Haystack?

3
这可能对一些人来说是一个显而易见的答案,但我不确定正确的答案是什么。我有一个简单的捐赠应用程序,通过表单创建Donor对象。要添加的功能是允许按姓氏和/或电话号码搜索每个捐赠者。
这是否是使用django-haystack的好例子,还是应该创建自己的过滤器?我可能会看到haystack的问题是每分钟提交几个捐赠,因此索引可能成为问题。目前有大约130,000条记录,并在增长。我已经开始实施haystack,但已经意识到它可能不必要。
1个回答

4
不要使用Haystack--当底层关系型数据库无法轻松处理时,它用于快速全文搜索。Haystack的使用案例是当您存储许多具有大量文本块的大型文档并希望通过文档中的单词进行索引以便轻松搜索时。
默认情况下,Django已经允许您轻松地索引/搜索文本记录。例如,使用管理后端简单指定搜索字段,您可以轻松搜索名称或电话号码。(通常会执行大小写不敏感的包含搜索--这将找到部分匹配;例如,如果您仅搜索“doe”或“ohn”,则会出现名称“John Doe”)。
因此,如果您的models.py具有:
class Donor(models.Model):
    name = models.CharField(max_length=50)
    phone = models.CharField(max_length=15)

和一个admin.py文件:

from django.contrib import admin
from mysite.myapp.models import Donor

class DonorAdmin(admin.ModelAdmin):
    model = Donor
    search_fields = ['name', 'phone']

admin.site.register(Donor, DonorAdmin)

它应该能正常工作。如果需要改进,请考虑在底层RDBMS中添加全文索引。例如,使用postgres,您可以在底层数据库中创建一个文本搜索索引post 8.3,django应该会自动使用:http://www.postgresql.org/docs/8.3/static/textsearch-indexes.html


谢谢!这似乎是更合理的方法。目前用户正在使用管理员搜索捐赠者,但我听说在那里允许执行大量搜索并不是一个好主意,因为它可能会导致性能问题。我想要搜索的主要原因是因为我需要允许“相同捐赠者”功能,即如果使用相同信息(地址、姓名、电话等)进行另一次捐赠,只需更改提货日期。在搜索之后,我希望他们能够点击捐赠者并带出预填充信息的捐赠表单。这也是我犹豫使用管理员的原因。 - Austin

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接