diff --git a/reviewboard/accounts/search_indexes.py b/reviewboard/accounts/search_indexes.py
index 3f8bf9276775a21374bbbc413271630112bfdfa4..9c8ea8a514e796382f2beea6e8020700bcb088ee 100644
--- a/reviewboard/accounts/search_indexes.py
+++ b/reviewboard/accounts/search_indexes.py
@@ -17,7 +17,7 @@ class UserIndex(BaseSearchIndex, indexes.Indexable):
     full_name = indexes.CharField(model_attr='get_full_name')
     url = indexes.CharField(model_attr='get_absolute_url')
     show_profile = indexes.BooleanField(model_attr='is_profile_visible')
-    groups = indexes.MultiValueField(indexed=False)
+    groups = indexes.CharField(indexed=False)
 
     def index_queryset(self, using=None):
         """Query the list of users for the index.
@@ -31,7 +31,6 @@ class UserIndex(BaseSearchIndex, indexes.Indexable):
 
         Only publicly-accessible groups will be stored in the index.
         """
-        return [
-            group.name
-            for group in user.review_groups.filter(invite_only=False)
-        ]
+        return ','.join(
+            user.review_groups.filter(invite_only=False).values_list(
+                'name', flat=True))
diff --git a/reviewboard/templates/search/_user.html b/reviewboard/templates/search/_user.html
index 33091eefa2e5d41a93e944f0c90b3046be0012a7..e74657ba1346a597c998d79a61a4d90c31a2786c 100644
--- a/reviewboard/templates/search/_user.html
+++ b/reviewboard/templates/search/_user.html
@@ -1,4 +1,4 @@
-{% load gravatars i18n %}
+{% load djblets_utils gravatars i18n %}
 
 <div class="search-result">
 {% if siteconfig_settings.integration_gravatars %}
@@ -22,7 +22,7 @@
 {% if result.groups %}
   <div class="search-result-user-groups">
    {% trans "A member of:" %}
-{%  for group_name in result.groups %}
+{%  for group_name in result.groups|split:',' %}
     <a href="{% url 'group' group_name %}">{{group_name}}</a>{% if not forloop.last %}, {% endif %}
 {%  endfor %}
   </div>
