3

したがって、これは一部の人にとっては明らかな答えかもしれませんが、正しい答えが何であるかはわかりません。フォームを介して Donor オブジェクトが作成される単純な寄付アプリケーションがあります。追加される機能は、各寄付者を姓や電話番号で検索できるようにすることです。

これは django-haystack を使用する良いケースですか、それとも独自のフィルターを作成する必要がありますか? haystack で発生する可能性がある問題は、毎分数件の寄付が送信されているため、インデックス作成に問題がある可能性があることです。現在、約 130,000 のレコードがあり、増え続けています。haystack の実装を開始しましたが、必要ではないことに気付きましたか?

4

1 に答える 1

4

haystackを使用しないでください。これは、基盤となるリレーショナルデータベースで簡単に処理できない場合に全文検索を高速化するためのものです。haystackの使用例は、簡単に検索できるように、ドキュメント内の単語でインデックスを作成するテキストの巨大なチャンクを含む多数の大きなドキュメントを保存する場合です。

Djangoでは、デフォルトですでにテキストレコードのインデックス作成/検索が簡単にできます。たとえば、管理バックエンドを使用すると、検索フィールドを指定するだけで、名前や電話番号を簡単に検索できます。(通常、大文字と小文字を区別しない検索が含まれます。これにより、部分一致が検索されます。たとえば、「doe」または「ohn」だけを検索すると、「JohnDoe」という名前が表示されます)。

したがって、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を使用すると、基礎となるデータベースに1つのライナーを含むテキスト検索インデックスpost 8.3を作成できます。これは、djangoが自動的に使用する必要があります:http://www.postgresql.org/docs/8.3/static/textsearch-indexes。 html

于 2012-11-02T19:08:50.787 に答える