Skip to content

Commit e09b124

Browse files
committed
DOCSP-43365: type specification for createSearchIndex(es)
1 parent 1442347 commit e09b124

File tree

6 files changed

+115
-76
lines changed

6 files changed

+115
-76
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 & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@
22
MongoDB\\Collection::createIndexes()
33
====================================
44

5-
65
.. contents:: On this page
76
:local:
87
:backlinks: none

source/reference/method/MongoDBCollection-createSearchIndex.txt

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

55
.. versionadded:: 1.17
66

7-
87
.. contents:: On this page
98
:local:
109
:backlinks: none
@@ -16,14 +15,14 @@ Definition
1615

1716
.. phpmethod:: MongoDB\Collection::createSearchIndex()
1817

19-
Create an Atlas Search index for the collection.
18+
Create an Atlas Search or Vector Search index for the collection.
2019

2120
.. code-block:: php
2221

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

2827
.. include:: /includes/extracts/note-atlas-search-requirement.rst
2928

@@ -38,28 +37,33 @@ Parameters
3837
An array specifying the desired options.
3938

4039
.. list-table::
41-
:header-rows: 1
42-
:widths: 20 20 80
40+
:header-rows: 1
41+
:widths: 20 20 80
4342

44-
* - Name
45-
- Type
46-
- Description
43+
* - Name
44+
- Type
45+
- Description
4746

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

52-
* - name
53-
- string
54-
- 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``.
5556

56-
You cannot create multiple indexes with the same name on a single
57-
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.
5862

5963
Return Values
6064
-------------
6165

62-
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.
6367

6468
Errors/Exceptions
6569
-----------------
@@ -91,8 +95,8 @@ to index all document fields containing
9195
$collection = (new MongoDB\Client)->getCollection('test', 'articles');
9296

9397
$indexName = $collection->createSearchIndex(
94-
['mappings' => ['dynamic' => true]],
95-
['name' => 'test-search-index']
98+
['mappings' => ['dynamic' => true]],
99+
['name' => 'test-search-index']
96100
);
97101

98102
var_dump($indexName);
@@ -110,6 +114,7 @@ See Also
110114
- :phpmethod:`MongoDB\Collection::dropSearchIndex()`
111115
- :phpmethod:`MongoDB\Collection::listSearchIndexes()`
112116
- :phpmethod:`MongoDB\Collection::updateSearchIndex()`
117+
- :ref:`php-atlas-search-index` guide
113118
- :manual:`createSearchIndexes </reference/command/createSearchIndexes>` command
114119
reference in the MongoDB manual
115120
- `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
@@ -16,7 +16,7 @@ Definition
1616

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

19-
Create one or more Atlas Search indexes for the collection.
19+
Create one or more Atlas Search or Vector Search indexes for the collection.
2020

2121
.. code-block:: php
2222

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

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

@@ -59,7 +63,8 @@ Parameters
5963
Return Values
6064
-------------
6165

62-
The names of the created Atlas Search indexes as an array of strings.
66+
The names of the created Atlas Search and Vector Search indexes as an
67+
array of strings.
6368

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

0 commit comments

Comments
 (0)