Index: django/contrib/admin/views/main.py
===================================================================
--- django/contrib/admin/views/main.py	(revision 7894)
+++ django/contrib/admin/views/main.py	(working copy)
@@ -11,7 +11,7 @@
 from django.db.models.query import QuerySet
 from django.http import Http404, HttpResponse, HttpResponseRedirect
 from django.utils.html import escape
-from django.utils.text import capfirst, get_text_list
+from django.utils.text import capfirst, get_text_list, smart_split
 from django.utils.encoding import force_unicode, smart_str
 from django.utils.translation import ugettext as _
 from django.utils.safestring import mark_safe
@@ -732,7 +732,8 @@
                 return "%s__icontains" % field_name
 
         if self.lookup_opts.admin.search_fields and self.query:
-            for bit in self.query.split():
+            for bit in smart_split(self.query):
+                bit = bit.strip("\'\"")
                 or_queries = [models.Q(**{construct_search(field_name): bit}) for field_name in self.lookup_opts.admin.search_fields]
                 other_qs = QuerySet(self.model)
                 other_qs.dup_select_related(qs)
Index: docs/model-api.txt
===================================================================
--- docs/model-api.txt	(revision 7894)
+++ docs/model-api.txt	(working copy)
@@ -1626,6 +1626,14 @@
     WHERE (first_name ILIKE '%john%' OR last_name ILIKE '%john%')
     AND (first_name ILIKE '%lennon%' OR last_name ILIKE '%lennon%')
 
+.. admonition:: Note
+
+    To search for phrase with a space use quotes. Supports double and
+    single quotes, and supports escaping quotes with backslashes.
+    ``"Foo bar" boo`` searches for ``foo bar`` and ``boo`` while
+    ``foo bar boo`` searches for ``foo`` and ``bar`` and ``foo``.
+    
 For faster and/or more restrictive searches, prefix the field name
 with an operator:
 
