所以这对一些人来说可能是一个显而易见的答案,但我不确定正确的答案是什么。我有一个简单的捐赠应用程序,捐赠者对象是通过表单创建的。要添加的一个功能是允许按姓氏和/或电话号码搜索每个捐赠者。
这是一个使用django-haystack的好例子,还是我应该创建我自己的过滤器?我可能会看到的问题是,每分钟都有一些捐款被提交,那么索引会是一个问题吗?目前大约有13万条记录,而且还在不断增加。我已经开始实现haystack,但已经意识到它可能不是必要的?
发布于 2012-11-03 03:08:51
不要使用haystack --这是为了在底层关系数据库不容易处理的情况下进行快速全文搜索。haystack的用例是,当您存储许多包含大量文本的大型文档时,您希望在文档中按单词进行索引,以便可以轻松地进行搜索。
默认情况下,Django已经允许您轻松地索引/搜索文本记录。例如,使用admin backend simply specify search fields,您可以轻松地搜索姓名或电话号码。(它通常会执行不区分大小写的包含搜索--这会找到部分匹配;例如,如果只搜索"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
https://stackoverflow.com/questions/13201473
复制相似问题