From 394491f2115ca96302aab630636c25677f044558 Mon Sep 17 00:00:00 2001 From: Alex Date: Mon, 5 Jan 2015 14:04:17 +0600 Subject: [PATCH] Extension point for query formatting at MySQLSearchBackend --- src/watson/backends.py | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/src/watson/backends.py b/src/watson/backends.py index c05638f..cd31c24 100644 --- a/src/watson/backends.py +++ b/src/watson/backends.py @@ -333,7 +333,7 @@ def escape_mysql_boolean_query(search_text): ) for word in escape_mysql_boolean_query_chars(search_text).split() ) - + class MySQLSearchBackend(SearchBackend): @@ -374,17 +374,20 @@ class MySQLSearchBackend(SearchBackend): requires_installation = True supports_ranking = True + + def _format_query(self, search_text): + return escape_mysql_boolean_query(search_text) def do_search(self, engine_slug, queryset, search_text): """Performs the full text search.""" return queryset.extra( where = ("MATCH (title, description, content) AGAINST (%s IN BOOLEAN MODE)",), - params = (escape_mysql_boolean_query(search_text),), + params = (self._format_query(search_text),), ) def do_search_ranking(self, engine_slug, queryset, search_text): """Performs full text ranking.""" - search_text = escape_mysql_boolean_query(search_text) + search_text = self._format_query(search_text) return queryset.extra( select = { "watson_rank": """ @@ -418,12 +421,12 @@ class MySQLSearchBackend(SearchBackend): ), "watson_searchentry.content_type_id = %s", ), - params = (engine_slug, escape_mysql_boolean_query(search_text), content_type.id), + params = (engine_slug, self._format_query(search_text), content_type.id), ) def do_filter_ranking(self, engine_slug, queryset, search_text): """Performs the full text ranking.""" - search_text = escape_mysql_boolean_query(search_text) + search_text = self._format_query(search_text) return queryset.extra( select = { "watson_rank": """