aboutsummaryrefslogtreecommitdiffstats
path: root/perllib/FixMyStreet/Roles/FullTextSearch.pm
diff options
context:
space:
mode:
Diffstat (limited to 'perllib/FixMyStreet/Roles/FullTextSearch.pm')
-rw-r--r--perllib/FixMyStreet/Roles/FullTextSearch.pm9
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 ]);
}