diff --git a/src/Typesense/Index.php b/src/Typesense/Index.php
index 7d14076..2e918af 100644
--- a/src/Typesense/Index.php
+++ b/src/Typesense/Index.php
@@ -7,6 +7,7 @@
use Statamic\Facades\Blink;
use Statamic\Search\Documents;
use Statamic\Search\Index as BaseIndex;
+use Statamic\Search\Result;
use Statamic\Support\Arr;
use Typesense\Client;
use Typesense\Exceptions\ObjectNotFound;
@@ -184,4 +185,14 @@ public function client()
{
return $this->client;
}
+
+ public function extraAugmentedResultData(Result $result)
+ {
+
+ if (is_null($highlight = Arr::get($result->getRawResult(), 'search_highlight')) && ! empty($highlight)) {
+ return [];
+ }
+
+ return ['search_highlight' => Arr::get(Arr::first($highlight), 'snippet')];
+ }
}
diff --git a/tests/Unit/IndexTest.php b/tests/Unit/IndexTest.php
index bce387e..4d320d4 100644
--- a/tests/Unit/IndexTest.php
+++ b/tests/Unit/IndexTest.php
@@ -132,4 +132,35 @@ public function it_sorts_by_specified_order()
$this->assertSame(['Entry 2', 'Entry 1'], collect($results['results'])->pluck('title')->all());
}
+
+ #[Test]
+ public function it_adds_search_highlight()
+ {
+ $entry1 = Facades\Entry::make()
+ ->id('test-2')
+ ->collection('pages')
+ ->data(['title' => 'Entry 1'])
+ ->save();
+
+ $results = Facades\Search::index('typesense_index')->searchUsingApi('Entry 1');
+
+ $this->assertEquals('Entry 1', $results['results'][0]['search_highlight']['title']['snippet']);
+ }
+
+ #[Test]
+ public function it_augments_with_search_highlight()
+ {
+ $entry1 = Facades\Entry::make()
+ ->id('test-2')
+ ->collection('pages')
+ ->data(['title' => 'Entry 1'])
+ ->save();
+
+ $index = Facades\Search::index('typesense_index');
+ $result = $index->search('Entry 1')->get()->first();
+
+ $augmentedData = $index->extraAugmentedResultData($result);
+
+ $this->assertSame(['search_highlight' => 'Entry 1'], $augmentedData);
+ }
}