The following is an example of using an index. Run the following statements in a database that uses the UTF-8 or GBK encoding:
1 2 3 4 5 6 7 8 9 10 11 12 | CREATE TBALE table1 (c_int int,c_bigint bigint,c_varchar varchar,c_text text) with(orientation=row); CREATE TEXT SEARCH CONFIGURATION ts_conf_1(parser=POUND); CREATE TEXT SEARCH CONFIGURATION ts_conf_2(parser=POUND) with(split_flag='%'); SET default_text_search_config='ts_conf_1'; CREATE INDEX idx1 ON table1 using gin(to_tsvector(c_text)); SET default_text_search_config='ts_conf_2'; CREATE INDEX idx2 ON table1 using gin(to_tsvector(c_text)); SELECT c_varchar,to_tsvector(c_varchar) FROM table1 where to_tsvector(c_text) @@ plainto_tsquery('¥#@...&**') and to_tsvector(c_text) @@ plainto_tsquery('Company ') and c_varchar is not null order by 1 desc limit 3; |
In this example, table1 has two GIN indexes created on the same column c_text, idx1 and idx2, but these two indexes are created under different settings of default_text_search_config. Differences between this example and the scenario where one table has common indexes created on the same column are as follows:
As a result, using idx1 and idx2 for the same query returns different results.
Still use the above example. When:
To avoid different query results caused by different GIN indexes, ensure that only one GIN index is available on a column of the physical table.