diff options
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 ]); } |