Repository: wagtail/wagtail (python)

Issue:
Image descriptions missing from search index

### Issue summary

When we introduced the built-in `description` field for images in Wagtail 6.3, we encouraged people to move to this over the Title field to manage their image alt text. But we didn’t make the field searchable, so searching for terms present in descriptions is no longer working like it was with `title` as the only built-in text field.

### Steps to reproduce

On the bakerydemo site, search for "orange flowers". Note there are no results.

### Additional information

Related: #13287

### Can be reproduced

Yes, on the bakerydemo

### Technical details

N/A

### Working on this

If you would like to contribute to this issue, follow these steps:
- Confirm that the issue is reproducible, either on a fresh Wagtail project or the [bakerydemo](https://github.com/wagtail/bakerydemo).
- Once confirmed, view our [contributing guidelines](https://docs.wagtail.org/en/latest/contributing/index.html), add a comment to the issue once you're ready to start.



Patch:
diff --git a/CHANGELOG.txt b/CHANGELOG.txt
index 16188be257c0..7bc688f0b61a 100644
--- a/CHANGELOG.txt
+++ b/CHANGELOG.txt
@@ -45,6 +45,7 @@ Changelog
 ~~~~~~~~~~~~~~~~~~
 
  * Fix: Use protocol-relative URLs in the userbar for compatibility with environments where Django does not detect the protocol (Sage Abdullah)
+ * Fix: Index the contents of image descriptions as well as titles, for CMS search (Advik Sharma)
 
 7.3.1 (03.03.2026)
 ~~~~~~~~~~~~~~~~~~
@@ -350,7 +351,7 @@ Changelog
 7.0.7 (xx.xx.xxxx) - IN DEVELOPMENT
 ~~~~~~~~~~~~~~~~~~
 
- *
+ * Fix: Index the contents of image descriptions as well as titles, for CMS search (Advik Sharma)
 
 7.0.6 (03.03.2026)
 ~~~~~~~~~~~~~~~~~~
@@ -643,7 +644,7 @@ Changelog
 6.3.9 (xx.xx.xxxx) - IN DEVELOPMENT
 ~~~~~~~~~~~~~~~~~~
 
- *
+ * Fix: Index the contents of image descriptions as well as titles, for CMS search (Advik Sharma)
 
 6.3.8 (03.03.2026)
 ~~~~~~~~~~~~~~~~~~
diff --git a/CONTRIBUTORS.md b/CONTRIBUTORS.md
index 1aa0dbdda729..ceb5d4d8f1b4 100644
--- a/CONTRIBUTORS.md
+++ b/CONTRIBUTORS.md
@@ -953,6 +953,7 @@
 * Ashutosh
 * Garrett Coakley
 * Collins Kubu
+* Advik Sharma
 
 ## Translators
 
diff --git a/docs/releases/6.3.9.md b/docs/releases/6.3.9.md
index cf04017de09b..5a6d06f6ebc5 100644
--- a/docs/releases/6.3.9.md
+++ b/docs/releases/6.3.9.md
@@ -17,7 +17,7 @@ depth: 1
 
 ### Bug fixes
 
- * ...
+ * Index the contents of image descriptions as well as titles, for CMS search (Advik Sharma)
 
 ### Documentation
 
diff --git a/docs/releases/7.0.7.md b/docs/releases/7.0.7.md
index b09b9df07253..a2db80ee661b 100644
--- a/docs/releases/7.0.7.md
+++ b/docs/releases/7.0.7.md
@@ -17,7 +17,7 @@ depth: 1
 
 ### Bug fixes
 
- * ...
+ * Index the contents of image descriptions as well as titles, for CMS search (Advik Sharma)
 
 ### Documentation
 
diff --git a/docs/releases/7.3.2.md b/docs/releases/7.3.2.md
index 94b727fd49ac..92d2772b387d 100644
--- a/docs/releases/7.3.2.md
+++ b/docs/releases/7.3.2.md
@@ -18,6 +18,7 @@ depth: 1
 ### Bug fixes
 
  * Use protocol-relative URLs in the userbar for compatibility with environments where Django does not detect the protocol (Sage Abdullah)
+ * Index the contents of image descriptions as well as titles, for CMS search (Advik Sharma)
 
 
 ### Documentation
diff --git a/wagtail/images/models.py b/wagtail/images/models.py
index ddbc20d1b95d..bc2ee255d1cb 100644
--- a/wagtail/images/models.py
+++ b/wagtail/images/models.py
@@ -363,6 +363,8 @@ def usage_url(self):
         index.SearchField("title", boost=10),
         index.AutocompleteField("title"),
         index.FilterField("title"),
+        index.SearchField("description"),
+        index.AutocompleteField("description"),
         index.RelatedFields(
             "tags",
             [


Test patch:
diff --git a/wagtail/images/tests/test_models.py b/wagtail/images/tests/test_models.py
index 4d6e137a44b0..a640edbb462b 100644
--- a/wagtail/images/tests/test_models.py
+++ b/wagtail/images/tests/test_models.py
@@ -205,6 +205,7 @@ def test_search_method(self):
         # Create an image for running tests on
         image = Image.objects.create(
             title="Test image",
+            description="A cool description",
             file=get_test_image_file(),
         )
 
@@ -212,6 +213,22 @@ def test_search_method(self):
         results = Image.objects.search("Test")
         self.assertEqual(list(results), [image])
 
+        results = Image.objects.search("cool")
+        self.assertEqual(list(results), [image])
+
+    def test_autocomplete_method(self):
+        image = Image.objects.create(
+            title="Test image",
+            description="A cool description",
+            file=get_test_image_file(),
+        )
+
+        results = Image.objects.autocomplete("Test")
+        self.assertEqual(list(results), [image])
+
+        results = Image.objects.autocomplete("cool")
+        self.assertEqual(list(results), [image])
+
     def test_operators(self):
         aaa_image = Image.objects.create(
             title="AAA Test image",