Skip to content

Commit 6d58f9d

Browse files
committed
DOCSP-43365: type specification for createSearchIndex(es)
(cherry picked from commit e09b124) (cherry picked from commit 586c4dd)
1 parent fb67c21 commit 6d58f9d

File tree

6 files changed

+115
-78
lines changed

6 files changed

+115
-78
lines changed

source/includes/extracts-note.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ content: |
2020
---
2121
ref: note-atlas-search-async
2222
content: |
23-
Atlas Search indexes are managed asynchronously. After creating or updating an
23+
Atlas Search and Vector Search indexes are managed asynchronously. After creating or updating an
2424
index, you can periodically execute
2525
:phpmethod:`MongoDB\Collection::listSearchIndexes()` and check the
2626
``queryable`` :manual:`output field </reference/operator/aggregation/listSearchIndexes/#output>`

source/includes/indexes/indexes.php

Lines changed: 35 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -57,36 +57,48 @@
5757
// end-index-array-query
5858

5959
// start-create-search-index
60-
$indexName = $collection->createSearchIndex(
60+
$searchIndexName = $collection->createSearchIndex(
6161
['mappings' => ['dynamic' => true]],
6262
['name' => 'mySearchIdx']
6363
);
6464
// end-create-search-index
6565

66-
// start-create-search-indexes
67-
$indexNames = $collection->createSearchIndexes(
66+
// start-create-vector-index
67+
$vectorSearchIndexName = $collection->createSearchIndex(
6868
[
69-
[
70-
'name' => 'SearchIdx_dynamic',
71-
'definition' => ['mappings' => ['dynamic' => true]],
72-
],
73-
[
74-
'name' => 'SearchIdx_simple',
75-
'definition' => [
76-
'mappings' => [
77-
'dynamic' => false,
78-
'fields' => [
79-
'title' => [
80-
'type' => 'string',
81-
'analyzer' => 'lucene.simple'
82-
]
83-
]
84-
]
85-
],
86-
],
87-
]
69+
'fields' => [[
70+
'type' => 'vector',
71+
'path' => 'plot_embedding',
72+
'numDimensions' => 1536,
73+
'similarity' => 'dotProduct'
74+
]]
75+
],
76+
['name' => 'myVSidx', 'type' => 'vectorSearch']
77+
);
78+
// end-create-vector-index
79+
80+
// start-create-multiple-indexes
81+
$indexNames = $collection->createSearchIndexes(
82+
[
83+
[
84+
'name' => 'SearchIdx',
85+
'definition' => ['mappings' => ['dynamic' => true]],
86+
],
87+
[
88+
'name' => 'VSidx',
89+
'type' => 'vectorSearch',
90+
'definition' => [
91+
'fields' => [[
92+
'type' => 'vector',
93+
'path' => 'plot_embedding',
94+
'numDimensions' => 1536,
95+
'similarity' => 'dotProduct'
96+
]]
97+
],
98+
],
99+
]
88100
);
89-
// end-create-search-indexes
101+
// end-create-multiple-indexes
90102

91103
// start-list-search-indexes
92104
foreach ($collection->listSearchIndexes() as $indexInfo) {

source/indexes/atlas-search-index.txt

Lines changed: 44 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -20,41 +20,46 @@ Atlas Search Indexes
2020
Overview
2121
--------
2222

23-
The MongoDB Atlas Search feature enables you to perform full-text
24-
searches on collections hosted on Atlas. Before you can perform Atlas
25-
Search queries, you must create indexes that specify which
26-
fields to index and how they are indexed.
23+
In this guide, you can learn how to programmatically manage your Atlas
24+
Search and Atlas Vector Search indexes by using the {+library-short+}.
2725

28-
To learn more about Atlas Search, see the :atlas:`Atlas Search Overview
29-
</atlas-search/atlas-search-overview/>`.
26+
The Atlas Search feature enables you to perform full-text searches on
27+
collections hosted on MongoDB Atlas. To learn more about Atlas Search,
28+
see the :atlas:`Atlas Search Overview </atlas-search/atlas-search-overview/>`.
29+
30+
Atlas Vector Search enables you to perform semantic searches on vector
31+
embeddings stored in MongoDB Atlas. To learn more about Atlas Vector Search,
32+
see the :atlas:`Atlas Vector Search Overview </atlas-vector-search/vector-search-overview/>`.
3033

3134
You can use the following methods on a ``MongoDB\Collection`` instance
32-
to manage your Atlas Search indexes:
35+
to manage your Atlas Search and Vector Search indexes:
3336

3437
- ``MongoDB\Collection::createSearchIndex()``
3538
- ``MongoDB\Collection::createSearchIndexes()``
3639
- ``MongoDB\Collection::listSearchIndexes()``
3740
- ``MongoDB\Collection::updateSearchIndex()``
3841
- ``MongoDB\Collection::dropSearchIndex()``
3942

40-
.. note:: Atlas Search Index Management is Asynchronous
43+
.. note:: Search and Vector Search Index Management is Asynchronous
4144

42-
The {+php-library+} manages Atlas Search indexes asynchronously. The
43-
library methods described in the following sections return the server
44-
response immediately, but the changes to your Search indexes take
45-
place in the background and might not complete until some time later.
45+
The {+php-library+} manages Atlas Search and Vector Search indexes
46+
asynchronously. The library methods described in the following
47+
sections return the server response immediately, but the changes to
48+
your Search indexes take place in the background and might not
49+
complete until some time later.
4650

4751
The following sections provide code examples that demonstrate how to use
48-
each Atlas Search index management method.
52+
each of the preceding methods.
4953

5054
.. _php-atlas-search-index-create:
5155

5256
Create a Search Index
5357
---------------------
5458

5559
You can use the ``createSearchIndex()`` method to create a single Atlas
56-
Search index on a collection, or the ``createSearchIndexes()`` method to
57-
create multiple indexes simultaneously.
60+
Search or Vector Search index on a collection, or the
61+
``createSearchIndexes()`` method to create multiple indexes
62+
simultaneously.
5863

5964
The following code example shows how to create a single Atlas Search
6065
index:
@@ -64,25 +69,38 @@ index:
6469
:start-after: start-create-search-index
6570
:end-before: end-create-search-index
6671

67-
The following code example shows how to create multiple Atlas Search
68-
indexes:
72+
The following code example shows how to create a single Atlas Vector
73+
Search index:
74+
75+
.. literalinclude:: /includes/indexes/indexes.php
76+
:language: php
77+
:start-after: start-create-vector-index
78+
:end-before: end-create-vector-index
79+
80+
The following code example shows how to create Search and
81+
Vector Search indexes in one call:
6982

7083
.. literalinclude:: /includes/indexes/indexes.php
7184
:language: php
72-
:start-after: start-create-search-indexes
73-
:end-before: end-create-search-indexes
85+
:start-after: start-create-multiple-indexes
86+
:end-before: end-create-multiple-indexes
87+
88+
After you create Atlas Search or Atlas Vector Search indexes, you can
89+
perform the corresponding query types on your documents.
7490

75-
After you create a Search index, you can perform Atlas Search queries on
76-
your collection. To learn more, see :atlas:`Create and Run Atlas Search
77-
Queries </atlas-search/searching/>` in the Atlas documentation.
91+
..
92+
TODO uncomment when https://github.com/mongodb/docs-php-library/pull/197 is merged
93+
To learn more, see the following guides:
94+
- :ref:`php-atlas-search`
95+
- :ref:`php-vector-search`
7896

7997
.. _php-atlas-search-index-list:
8098

8199
List Search Indexes
82100
-------------------
83101

84102
You can use the ``listSearchIndexes()`` method to return an array of the
85-
Atlas Search indexes on a collection:
103+
Atlas Search and Vector Search indexes on a collection:
86104

87105
.. literalinclude:: /includes/indexes/indexes.php
88106
:language: php
@@ -96,9 +114,8 @@ Update a Search Index
96114
---------------------
97115

98116
You can use the ``updateSearchIndex()``
99-
method to update an Atlas Search index. You can use this method to
100-
change the name of a Search index or change the configuration of the
101-
index.
117+
method to update an Atlas Search or Vector Search index. You can use this method to
118+
change the name or configuration of an existing index.
102119

103120
The following code shows how to update a search index to use a simple
104121
analyzer on the ``title`` field:
@@ -115,7 +132,7 @@ Delete a Search Index
115132
---------------------
116133

117134
You can use the ``dropSearchIndex()`` method to remove an Atlas Search
118-
index from a collection.
135+
or Vector Search index from a collection.
119136

120137
The following code shows how to delete the Atlas Search index named
121138
``mySearchIdx``:

source/reference/method/MongoDBCollection-createIndexes.txt

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,6 @@
22
MongoDB\\Collection::createIndexes()
33
====================================
44

5-
.. default-domain:: mongodb
6-
75
.. contents:: On this page
86
:local:
97
:backlinks: none

source/reference/method/MongoDBCollection-createSearchIndex.txt

Lines changed: 27 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,6 @@ MongoDB\\Collection::createSearchIndex()
44

55
.. versionadded:: 1.17
66

7-
.. default-domain:: mongodb
8-
97
.. contents:: On this page
108
:local:
119
:backlinks: none
@@ -17,14 +15,14 @@ Definition
1715

1816
.. phpmethod:: MongoDB\Collection::createSearchIndex()
1917

20-
Create an Atlas Search index for the collection.
18+
Create an Atlas Search or Vector Search index for the collection.
2119

2220
.. code-block:: php
2321

24-
function createSearchIndex(
25-
array|object $definition,
26-
array $options = []
27-
): string
22+
function createSearchIndex(
23+
array|object $definition,
24+
array $options = []
25+
): string
2826

2927
.. include:: /includes/extracts/note-atlas-search-requirement.rst
3028

@@ -39,28 +37,33 @@ Parameters
3937
An array specifying the desired options.
4038

4139
.. list-table::
42-
:header-rows: 1
43-
:widths: 20 20 80
40+
:header-rows: 1
41+
:widths: 20 20 80
4442

45-
* - Name
46-
- Type
47-
- Description
43+
* - Name
44+
- Type
45+
- Description
4846

49-
* - comment
50-
- mixed
51-
- .. include:: /includes/extracts/common-option-comment.rst
47+
* - comment
48+
- mixed
49+
- .. include:: /includes/extracts/common-option-comment.rst
5250

53-
* - name
54-
- string
55-
- Name of the search index to create.
51+
* - name
52+
- string
53+
- | Name of the search index to create.
54+
| You cannot create multiple indexes with the same name on a single
55+
collection. If you do not specify a name, the index is named ``default``.
5656

57-
You cannot create multiple indexes with the same name on a single
58-
collection. If you do not specify a name, the index is named "default".
57+
* - type
58+
- string
59+
- Type of index to create. Accepted values are ``'search'`` and
60+
``'vectorSearch'``. If you omit this option, the default
61+
value is ``'search'`` and the method creates an Atlas Search index.
5962

6063
Return Values
6164
-------------
6265

63-
The name of the created Atlas Search index as a string.
66+
The name of the created Atlas Search or Vector Search index as a string.
6467

6568
Errors/Exceptions
6669
-----------------
@@ -92,8 +95,8 @@ to index all document fields containing
9295
$collection = (new MongoDB\Client)->selectCollection('test', 'articles');
9396

9497
$indexName = $collection->createSearchIndex(
95-
['mappings' => ['dynamic' => true]],
96-
['name' => 'test-search-index']
98+
['mappings' => ['dynamic' => true]],
99+
['name' => 'test-search-index']
97100
);
98101

99102
var_dump($indexName);
@@ -111,6 +114,7 @@ See Also
111114
- :phpmethod:`MongoDB\Collection::dropSearchIndex()`
112115
- :phpmethod:`MongoDB\Collection::listSearchIndexes()`
113116
- :phpmethod:`MongoDB\Collection::updateSearchIndex()`
117+
- :ref:`php-atlas-search-index` guide
114118
- :manual:`createSearchIndexes </reference/command/createSearchIndexes>` command
115119
reference in the MongoDB manual
116120
- `Atlas Search <https://www.mongodb.com/docs/atlas/atlas-search/>`__ documentation in the MongoDB Manual

source/reference/method/MongoDBCollection-createSearchIndexes.txt

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ Definition
1717

1818
.. phpmethod:: MongoDB\Collection::createSearchIndexes()
1919

20-
Create one or more Atlas Search indexes for the collection.
20+
Create one or more Atlas Search or Vector Search indexes for the collection.
2121

2222
.. code-block:: php
2323

@@ -42,6 +42,10 @@ Parameters
4242
create. You cannot create multiple indexes with the same name on a single
4343
collection. If you do not specify a name, the index is named "default".
4444

45+
An optional ``type`` string field specifies the type of search index to
46+
create. Accepted values are ``'search'`` and ``'vectorSearch'``. If
47+
you do not specify a type, the method creates an Atlas Search index.
48+
4549
``$options`` : array
4650
An array specifying the desired options.
4751

@@ -60,7 +64,8 @@ Parameters
6064
Return Values
6165
-------------
6266

63-
The names of the created Atlas Search indexes as an array of strings.
67+
The names of the created Atlas Search and Vector Search indexes as an
68+
array of strings.
6469

6570
Errors/Exceptions
6671
-----------------
@@ -118,6 +123,7 @@ See Also
118123
- :phpmethod:`MongoDB\Collection::dropSearchIndex()`
119124
- :phpmethod:`MongoDB\Collection::listSearchIndexes()`
120125
- :phpmethod:`MongoDB\Collection::updateSearchIndex()`
126+
- :ref:`php-atlas-search-index` guide
121127
- :manual:`createSearchIndexes </reference/command/createSearchIndexes>` command
122128
reference in the MongoDB manual
123129
- `Atlas Search <https://www.mongodb.com/docs/atlas/atlas-search/>`__ documentation in the MongoDB Manual

0 commit comments

Comments
 (0)