summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--searx/webutils.py6
-rw-r--r--tests/unit/test_webutils.py5
2 files changed, 7 insertions, 4 deletions
diff --git a/searx/webutils.py b/searx/webutils.py
index bfc6b22f7..8cdcab84b 100644
--- a/searx/webutils.py
+++ b/searx/webutils.py
@@ -290,10 +290,8 @@ def highlight_content(content, query):
if len(qs) > 0:
queries.extend(re.findall(regex_highlight_cjk(qs), content, flags=re.I | re.U))
if len(queries) > 0:
- for q in set(queries):
- content = re.sub(
- regex_highlight_cjk(q), f'<span class="highlight">{q}</span>'.replace('\\', r'\\'), content
- )
+ regex = re.compile("|".join(map(regex_highlight_cjk, queries)))
+ return regex.sub(lambda match: f'<span class="highlight">{match.group(0)}</span>'.replace('\\', r'\\'), content)
return content
diff --git a/tests/unit/test_webutils.py b/tests/unit/test_webutils.py
index 244d2b180..b4395539b 100644
--- a/tests/unit/test_webutils.py
+++ b/tests/unit/test_webutils.py
@@ -57,6 +57,11 @@ class TestWebUtils(SearxTestCase):
]
),
),
+ (
+ 'a class',
+ 'a string with class.',
+ '<span class="highlight">a</span> string with <span class="highlight">class</span>.',
+ ),
)
for query, content, expected in data:
self.assertEqual(webutils.highlight_content(content, query), expected)