私のレールプロジェクトでpg_searchを使い始めましたが、私はインデックスを構築することについて混乱しています。RailsとPostgresql、インデックスの構築について混乱しました
私はフルテキスト検索を行う2つの属性を持つモデルを持っています:タイトルと説明。現在、私はこのセットアップを持っています:
class Argumentation < ApplicationRecord
include PgSearch
pg_search_scope :searchfor, :against => [:title, :description]
end
これは動作しますが、クエリは遅いです。それは速くする必要があり、私の最初の考えはインデックスを追加することでした。
全文検索用のインデックスを構築する専用のサイトがあります:https://github.com/Casecommons/pg_search/wiki/Building-indexes
私はガイドをフォローしたい、しかし、いくつかのものは私を混乱させる:
1.ガイドは私に語った、追加します列 "tsvector"をテーブルに追加します。
add_column :posts, :tsv_body, :tsvector
ただし、このコード行では2つの列tsv_bodyとtsvectorを追加していませんか?または、tsv_bodyはプレースホルダです(たとえば、私の場合の説明やタイトルなど)。その後
、インデックスは次のようtsv_bodyするために添加されるべきである:
ADD_INDEX(:記事、:tsv_body、使用: 'ジン')を
- トリガー自体には、「pg_catalog.english」があります。
このガイドでは、トリガーについて説明します。トリガーが必要な理由文字列属性にインデックスを追加すると、トリガーは必要ありません(私が間違っていない場合)。
CREATE_TRIGGER(互換性:1).on(:記事).before(:挿入:更新は):= to_tsvector( 'pg_catalog.english'、合体(new.body、」 」new.tsv_bodyを行います'))); " end
私の属性には英語だけでなく多くの言語があるので、複数の言語がある場合はインデックスを追加することも可能ですか? tsv_bodyとのtsvector:;