PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

Korrekter Volltextindex Rails/PostgreSQL/pg_search

Dieser Ausdruck:

to_tsvector('simple', (COALESCE(title::TEXT), ''))

ist nicht mit Ihrem Index kombinierbar.

Sie sollten den Index auf genau den Ausdruck deklarieren, der in der Abfrage verwendet wird:

CREATE INDEX products_gin_title
ON products
USING GIN(to_tsvector('simple', COALESCE(title::TEXT,'')))

(oder lassen Sie Ruby den Ausdruck generieren, der im Index verwendet wird).

Wenn Sie möchten, dass mehrere Spalten indiziert werden, verketten Sie sie einfach:

CREATE INDEX products_gin_title
ON products
USING GIN(to_tsvector('simple', title || ' ' || product_type || ' ' || platform_id))

Aber noch einmal, Ruby sollte nach genau demselben Ausdruck filtern, damit der Index von Nutzen ist.