所以這可能是一些明顯的答案,但我不確定正確的答案是什麼。我有一個簡單的捐贈應用程序,通過表單創建捐贈對象。要添加的功能是允許按姓氏和/或電話號碼搜索每個捐助者。要不要使用Django-Haystack?
這是使用django-haystack的好例子,還是我應該創建自己的過濾器?我可能用乾草堆看到的問題是,每分鐘都會提交一些捐款,因此索引可能會成爲問題?目前有大約13萬條記錄並在不斷增長。我已經開始實施乾草堆,但意識到它可能沒有必要?
所以這可能是一些明顯的答案,但我不確定正確的答案是什麼。我有一個簡單的捐贈應用程序,通過表單創建捐贈對象。要添加的功能是允許按姓氏和/或電話號碼搜索每個捐助者。要不要使用Django-Haystack?
這是使用django-haystack的好例子,還是我應該創建自己的過濾器?我可能用乾草堆看到的問題是,每分鐘都會提交一些捐款,因此索引可能會成爲問題?目前有大約13萬條記錄並在不斷增長。我已經開始實施乾草堆,但意識到它可能沒有必要?
不要使用乾草堆 - 這是在底層關係數據庫無法輕鬆處理時進行快速全文搜索的原因。乾草堆的用例是當你存儲很多大文檔時需要大量的文本,這些文檔需要在文檔中通過單詞進行索引,以便於搜索。
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,您可以在底層數據庫中創建一個文本搜索索引8.3後綴,該django應自動使用:http://www.postgresql.org/docs/8.3/static/textsearch-indexes.html
謝謝!這似乎是更合乎邏輯的方式。目前,用戶正在使用管理員搜索捐助者,但我聽說,允許在那裏執行大量搜索並不是一個好主意,因爲這可能會導致性能問題。我希望搜索的主要原因是因爲我需要允許「同一個捐助者」功能,如果使用相同的信息(地址,姓名,電話等)以另一個接收日期進行另一次捐贈。搜索後我想要他們能夠點擊捐助者,並提供預填充信息的捐贈表格。另外爲什麼我也猶豫使用管理員 – Austin