diff options
author | M Somerville <matthew-github@dracos.co.uk> | 2020-08-05 15:56:10 +0100 |
---|---|---|
committer | M Somerville <matthew-github@dracos.co.uk> | 2020-08-06 20:28:57 +0100 |
commit | 7af4f2cc87cd6ff55501bb2856193a03fe72158c (patch) | |
tree | e2c1f396bb4a34220379b94d9e25d4671f29b052 /perllib/FixMyStreet/Roles/FullTextSearch.pm | |
parent | 21efead606530cb754bb7b54586dbb8c1a1502ca (diff) |
Add database index for user full text search.
Diffstat (limited to 'perllib/FixMyStreet/Roles/FullTextSearch.pm')
-rw-r--r-- | perllib/FixMyStreet/Roles/FullTextSearch.pm | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/perllib/FixMyStreet/Roles/FullTextSearch.pm b/perllib/FixMyStreet/Roles/FullTextSearch.pm index dc7730798..871b1d185 100644 --- a/perllib/FixMyStreet/Roles/FullTextSearch.pm +++ b/perllib/FixMyStreet/Roles/FullTextSearch.pm @@ -5,6 +5,7 @@ use FixMyStreet; requires 'text_search_columns'; requires 'text_search_nulls'; +requires 'text_search_translate'; sub search_text { my ($rs, $query) = @_; @@ -14,8 +15,12 @@ sub search_text { $nulls{$_} ? "coalesce($col, '')" : $col; } $rs->text_search_columns; my $vector = join(" || ' ' || ", @cols); - $vector = "translate($vector, '/.', ' ')"; - my $bind = "translate(?, '/.', ' ')"; + my $bind = '?'; + if (my $trans = $rs->text_search_translate) { + my $replace = ' ' x length $trans; + $vector = "translate($vector, '$trans', '$replace')"; + $bind = "translate(?, '$trans', '$replace')"; + } my $config = FixMyStreet->config('DB_FULL_TEXT_SEARCH_CONFIG') || 'english'; $rs->search(\[ "to_tsvector('$config', $vector) @@ plainto_tsquery('$config', $bind)", $query ]); } |