Djangoでは、バージョン1.11以降、PostgreSQLのクラスはGinIndex
(https://docs.djangoproject.com/en/1.11/ref/contrib/postgres/indexes/)です。私はVectorSearchField
私のテーブルの1つに追加してそのようなインデックスを構築する移行を作成したいと思います。これまでのところ、にdb_index=True
を追加しようとしましたが、Bツリーインデックスを作成しようとしていて、VectorSearchField
の値が長すぎるため、失敗します。Djangoの移行でGINインデックスを作成する方法
私はmigrations.RunSQL()
移行を実行することにより、私が欲しいのインデックスを作成するために管理:特別GinIndex
クラスはジャンゴでありますのでしかし、私は推測、おそらくこのようなインデックスを作成する方法がある
CREATE INDEX entryline_sv_index ON entryline USING GIN (sv);
生のSQLを実行しないで?
ここでモデルクラスです:
import django.contrib.postgres.search as pg_search
class EntryLine(models.Model):
speaker = models.CharField(max_length=512, db_index=True)
text = models.TextField()
sv = pg_search.SearchVectorField(null=True) # I want a GIN index on this field.
正しく移行にsv
フィールドのインデックスを作成する方法任意のアイデアは?または、CREATE INDEX ...
クエリを実行するのが最善の方法ですか?
これはまさに私が望んでいたものです! :)ちょうどGinIndexクラスを使用する適切な方法を知らなかった。ありがとうございました! – Maciek
うれしい私は助けることができます。あなたのプロジェクトで最高のもの – e4c5
これはすばらしいことです。ありがとうございます。ドキュメントには使用方法の例は含まれていません。 1つの質問です。それは 'GinIndex(fields = ['sv'])'ではないでしょうか?私は何かが欠落していない限り、メタの 'sv'は別途定義されないと思います。 – yekta