sql >> Databáze >  >> RDS >> PostgreSQL

Správný fulltextový index Rails/PostgreSQL/pg_search

Tento výraz:

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

není proměnlivý vůči vašemu indexu.

Index byste měli deklarovat přesně na tom výrazu, který je použit v dotazu:

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

(nebo nechte ruby ​​vygenerovat výraz, který je použit v indexu).

Pokud chcete, aby bylo indexováno více sloupců, stačí je zřetězit:

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

ale znovu, Ruby by měla filtrovat přesně stejný výraz, aby byl index užitečný.




  1. MySQL:Sloupec 'název_sloupce' v místě, kde je klauzule nejednoznačná

  2. mysql_num_fields():zadaný argument není platným zdrojem výsledků MySQL

  3. Vysvětlete MySQL vysvětlete matematiku prováděcího plánu, rozdíl mezi dvěma plány

  4. Jak napsat tento SQL příkaz?