summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniel Hones <danielhones@gmail.com>2021-02-08 23:58:54 -0500
committerDaniel Hones <danielhones@gmail.com>2021-02-08 23:58:54 -0500
commit138f32471c5dfe12299471037782ac353462be74 (patch)
tree0f2ef0a6f050e9e7b77b99f9ddaec304f1b3a4e7
parentab8739809c8c5f4c1f12e4b15fa8c61afe30ef9f (diff)
downloadsearxng-138f32471c5dfe12299471037782ac353462be74.tar.gz
searxng-138f32471c5dfe12299471037782ac353462be74.zip
Updated webutils.highlight_content to ignore double-quotes when highlighting query parts
-rw-r--r--AUTHORS.rst2
-rw-r--r--searx/webutils.py5
-rw-r--r--tests/unit/test_webutils.py22
3 files changed, 27 insertions, 2 deletions
diff --git a/AUTHORS.rst b/AUTHORS.rst
index 036ae0fe1..b44a10b55 100644
--- a/AUTHORS.rst
+++ b/AUTHORS.rst
@@ -154,6 +154,6 @@ generally made searx better:
- @mrwormo
- Xiaoyu WEI @xywei
- @joshu9h
-
+- Daniel Hones
diff --git a/searx/webutils.py b/searx/webutils.py
index 8be8fcecd..2464a097f 100644
--- a/searx/webutils.py
+++ b/searx/webutils.py
@@ -119,7 +119,10 @@ def highlight_content(content, query):
else:
regex_parts = []
for chunk in query.split():
- if len(chunk) == 1:
+ chunk = chunk.replace('"', '')
+ if len(chunk) == 0:
+ continue
+ elif len(chunk) == 1:
regex_parts.append('\\W+{0}\\W+'.format(re.escape(chunk)))
else:
regex_parts.append('{0}'.format(re.escape(chunk)))
diff --git a/tests/unit/test_webutils.py b/tests/unit/test_webutils.py
index aa464688b..023374b04 100644
--- a/tests/unit/test_webutils.py
+++ b/tests/unit/test_webutils.py
@@ -34,6 +34,28 @@ class TestWebUtils(SearxTestCase):
query = 'a test'
self.assertEqual(webutils.highlight_content(content, query), content)
+ data = (
+ ('" test "',
+ 'a test string',
+ 'a <span class="highlight">test</span> string'),
+ ('"a"',
+ 'this is a test string',
+ 'this is<span class="highlight"> a </span>test string'),
+ ('a test',
+ 'this is a test string that matches entire query',
+ 'this is <span class="highlight">a test</span> string that matches entire query'),
+ ('this a test',
+ 'this is a string to test.',
+ ('<span class="highlight">this</span> is<span class="highlight"> a </span>'
+ 'string to <span class="highlight">test</span>.')),
+ ('match this "exact phrase"',
+ 'this string contains the exact phrase we want to match',
+ ('<span class="highlight">this</span> string contains the <span class="highlight">exact</span>'
+ ' <span class="highlight">phrase</span> we want to <span class="highlight">match</span>'))
+ )
+ for query, content, expected in data:
+ self.assertEqual(webutils.highlight_content(content, query), expected)
+
class TestUnicodeWriter(SearxTestCase):