diff --git a/doc/usage/tips_tricks.rst b/doc/usage/tips_tricks.rst
index fdfcf35..ecada60 100644
--- a/doc/usage/tips_tricks.rst
+++ b/doc/usage/tips_tricks.rst
@@ -105,3 +105,16 @@ Examples:
 ~~~~~~~~~
 https://pagure.io/SSSD/sssd/issues?status=Open&search_pattern=review%3ATrue
 https://pagure.io/pagure/issues?status=Open&search_pattern=tags%3Aeasyfix
+
+
+Search the comments of issues
+-----------------------------
+
+One can search all the comments made on an issue tracker using
+``content:<keyword>`` in the search field. This is going to search all the
+comments (including the descriptions) of all the tickets and thus can be quite
+slow on large project. This is why this feature isn't being pushed much forward.
+
+Examples:
+~~~~~~~~~
+https://pagure.io/pagure/issues?status=Open&search_pattern=content%3Aeasyfix
diff --git a/pagure/lib/query.py b/pagure/lib/query.py
index 529e5ef..eec9a55 100644
--- a/pagure/lib/query.py
+++ b/pagure/lib/query.py
@@ -2766,6 +2766,7 @@ def search_issues(
     offset=None,
     limit=None,
     search_pattern=None,
+    search_content=None,
     custom_search=None,
     updated_after=None,
     no_milestones=None,
@@ -2820,6 +2821,8 @@ def search_issues(
     :type count: boolean
     :kwarg search_pattern: a string to search in issues title
     :type search_pattern: str or None
+    :kwarg search_content: a string to search in the issues comments
+    :type search_content: str or None
     :kwarg custom_search: a dictionary of key/values to be used when
         searching issues with a custom key constraint
     :type custom_search: dict or None
@@ -3009,6 +3012,19 @@ def search_issues(
                 sqlalchemy.or_((const for const in constraints))
             )
 
+    if search_content is not None:
+        query = query.filter(
+            sqlalchemy.or_(
+                model.Issue.content.ilike("%%%s%%" % search_content),
+                sqlalchemy.and_(
+                    model.Issue.uid == model.IssueComment.issue_uid,
+                    model.IssueComment.comment.ilike(
+                        "%%%s%%" % search_content
+                    ),
+                ),
+            )
+        )
+
     query = session.query(model.Issue).filter(
         model.Issue.uid.in_(query.subquery())
     )
diff --git a/pagure/ui/issues.py b/pagure/ui/issues.py
index 93857c1..63de12b 100644
--- a/pagure/ui/issues.py
+++ b/pagure/ui/issues.py
@@ -492,9 +492,7 @@ def view_issues(repo, username=None, namespace=None):
     tags = [tag.strip() for tag in tags if tag.strip()]
     assignee = flask.request.args.get("assignee", None)
     author = flask.request.args.get("author", None)
-    search_pattern = flask.request.args.get("search_pattern", None)
-    if search_pattern == "":
-        search_pattern = None
+    search_pattern = flask.request.args.get("search_pattern") or None
     milestones = flask.request.args.getlist("milestone", None)
     order = flask.request.args.get("order", "desc")
     order_key = flask.request.args.get("order_key", "date_created")
@@ -519,6 +517,7 @@ def view_issues(repo, username=None, namespace=None):
         "assignee": assignee,
         "author": author,
         "milestones": milestones,
+        "search_content": None,
     }
 
     no_stone = None
@@ -531,6 +530,10 @@ def view_issues(repo, username=None, namespace=None):
         search_pattern
     )
 
+    if "content" in extra_fields:
+        extra_fields["search_content"] = extra_fields["content"]
+        del (extra_fields["content"])
+
     for field in fields:
         if field in extra_fields:
             fields[field] = extra_fields[field]