]> granicus.if.org Git - postgresql/commit
Improve contrib/pg_trgm's heuristics for regexp index searches.
authorTom Lane <tgl@sss.pgh.pa.us>
Sun, 6 Apr 2014 00:48:47 +0000 (20:48 -0400)
committerTom Lane <tgl@sss.pgh.pa.us>
Sun, 6 Apr 2014 00:48:47 +0000 (20:48 -0400)
commit80a5cf643adb496abe577a1ca6dc0c476d849c19
tree114ddb1169506807ff611744d16752ecb5addfdf
parent5d8117e1f38d7240e99d57e624a9d880872c7e98
Improve contrib/pg_trgm's heuristics for regexp index searches.

When extracting trigrams from a regular expression for search of a GIN or
GIST trigram index, it's useful to penalize (preferentially discard)
trigrams that contain whitespace, since those are typically far more common
in the index than trigrams not containing whitespace.  Of course, this
should only be a preference not a hard rule, since we might otherwise end
up with no trigrams to search for.  The previous coding tended to produce
fairly inefficient trigram search sets for anchored regexp patterns, as
reported by Erik Rijkers.  This patch penalizes whitespace-containing
trigrams, and also reduces the target number of extracted trigrams, since
experience suggests that the original coding tended to select too many
trigrams to search for.

Alexander Korotkov, reviewed by Tom Lane
contrib/pg_trgm/trgm_regexp.c