From 7bc548e3bc1f89f76316d63f26f10613142505d4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=B4me=20Tamarelle?= Date: Tue, 2 Sep 2025 20:32:05 +0200 Subject: [PATCH] Add vector search type to atlas search indexes --- doctrine-mongo-mapping.xsd | 8 ++++++++ .../ODM/MongoDB/Mapping/Annotations/SearchIndex.php | 2 ++ lib/Doctrine/ODM/MongoDB/Mapping/ClassMetadata.php | 3 ++- .../ODM/MongoDB/Mapping/Driver/AttributeDriver.php | 2 +- 4 files changed, 13 insertions(+), 2 deletions(-) diff --git a/doctrine-mongo-mapping.xsd b/doctrine-mongo-mapping.xsd index 6ff939cd59..4729701dd1 100644 --- a/doctrine-mongo-mapping.xsd +++ b/doctrine-mongo-mapping.xsd @@ -566,12 +566,20 @@ + + + + + + + + diff --git a/lib/Doctrine/ODM/MongoDB/Mapping/Annotations/SearchIndex.php b/lib/Doctrine/ODM/MongoDB/Mapping/Annotations/SearchIndex.php index cb5bc2a11f..78c31017a8 100644 --- a/lib/Doctrine/ODM/MongoDB/Mapping/Annotations/SearchIndex.php +++ b/lib/Doctrine/ODM/MongoDB/Mapping/Annotations/SearchIndex.php @@ -24,6 +24,7 @@ class SearchIndex implements Annotation * @param list|null $analyzers * @param SearchIndexStoredSource|null $storedSource * @param list|null $synonyms + * @param string|null $type Type of index: 'search' (default) or 'vectorSearch' */ public function __construct( public ?string $name = null, @@ -34,6 +35,7 @@ public function __construct( public ?array $analyzers = null, public $storedSource = null, public ?array $synonyms = null, + public ?string $type = null, ) { } } diff --git a/lib/Doctrine/ODM/MongoDB/Mapping/ClassMetadata.php b/lib/Doctrine/ODM/MongoDB/Mapping/ClassMetadata.php index 0ab69a6e1d..c9dcdf6b06 100644 --- a/lib/Doctrine/ODM/MongoDB/Mapping/ClassMetadata.php +++ b/lib/Doctrine/ODM/MongoDB/Mapping/ClassMetadata.php @@ -1245,7 +1245,7 @@ public function hasIndexes(): bool * * @phpstan-param SearchIndexDefinition $definition */ - public function addSearchIndex(array $definition, ?string $name = null): void + public function addSearchIndex(array $definition, ?string $name = null, ?string $type): void { $name ??= self::DEFAULT_SEARCH_INDEX_NAME; @@ -1256,6 +1256,7 @@ public function addSearchIndex(array $definition, ?string $name = null): void $this->searchIndexes[] = [ 'definition' => $definition, 'name' => $name, + 'type' => $type, ]; } diff --git a/lib/Doctrine/ODM/MongoDB/Mapping/Driver/AttributeDriver.php b/lib/Doctrine/ODM/MongoDB/Mapping/Driver/AttributeDriver.php index 99415f205f..c15236de17 100644 --- a/lib/Doctrine/ODM/MongoDB/Mapping/Driver/AttributeDriver.php +++ b/lib/Doctrine/ODM/MongoDB/Mapping/Driver/AttributeDriver.php @@ -386,7 +386,7 @@ private function addSearchIndex(ClassMetadata $class, SearchIndex $index): void } } - $class->addSearchIndex($definition, $index->name ?? null); + $class->addSearchIndex($definition, $index->name, $index->type); } /**