PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

Índice de texto completo adequado Rails/PostgreSQL/pg_search


Esta expressão:
to_tsvector('simple', (COALESCE(title::TEXT), ''))

não é sargável em relação ao seu índice.

Você deve declarar o índice exatamente na expressão usada na consulta:
CREATE INDEX products_gin_title
ON products
USING GIN(to_tsvector('simple', COALESCE(title::TEXT,'')))

(ou faça ruby ​​gerar a expressão que é usada no índice).

Se você quiser que várias colunas sejam indexadas, basta concatená-las:
CREATE INDEX products_gin_title
ON products
USING GIN(to_tsvector('simple', title || ' ' || product_type || ' ' || platform_id))

mas, novamente, Ruby deve estar filtrando exatamente a mesma expressão para que o índice seja útil.