Skip to content

Commit 239b02a

Browse files
committed
NR PR fixes 1
1 parent bd5b0c2 commit 239b02a

File tree

1 file changed

+168
-165
lines changed

1 file changed

+168
-165
lines changed

docs/scout.txt

Lines changed: 168 additions & 165 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,21 @@
11
.. _laravel-scout:
22

3-
============================
4-
Integrated Search with Scout
5-
============================
3+
===========================
4+
Full-Text Search with Scout
5+
===========================
66

77
.. facet::
8-
:name: genre
9-
:values: reference
8+
:name: genre
9+
:values: reference
1010

1111
.. meta::
12-
:keywords: php framework, odm, code example, text search, atlas
12+
:keywords: php framework, odm, code example, text search, atlas
1313

1414
.. contents:: On this page
15-
:local:
16-
:backlinks: none
17-
:depth: 2
18-
:class: singlecol
15+
:local:
16+
:backlinks: none
17+
:depth: 2
18+
:class: singlecol
1919

2020
Overview
2121
--------
@@ -26,11 +26,11 @@ search on your Eloquent models. To learn more, see `Laravel Scout
2626
<https://laravel.com/docs/{+laravel-docs-version+}/scout>`__ in the
2727
Laravel documentation.
2828

29-
The Scout Integration for {+odm-long+} provides the following
29+
The Scout integration for {+odm-long+} provides the following
3030
functionality:
3131

3232
- Provides an abstraction to create search indexes on documents in
33-
MongoDB collections and other search engines. In MongoDB, this feature
33+
MongoDB collections and external search engines. In MongoDB, this feature
3434
allows you to create :atlas:`Atlas Search indexes
3535
</atlas-search/manage-indexes/>`.
3636

@@ -41,158 +41,161 @@ functionality:
4141

4242
.. note:: Deployment Compatibility
4343

44-
You can use Laravel Scout only when you connect to MongoDB Atlas
45-
clusters. This feature is not available for self-managed or
46-
serverless deployments.
47-
48-
Install Scout Package
49-
---------------------
50-
51-
Before you can use Scout in your application, you must run the following
52-
command to install Laravel Scout:
53-
54-
.. code-block:: bash
55-
56-
composer require laravel/scout
57-
58-
Add the Searchable Trait to Your Model
59-
--------------------------------------
60-
61-
Add the ``Laravel\Scout\Searchable`` trait to an Eloquent model to make
62-
it searchable. This example uses the ``Movie`` model, which represents
63-
documents in the ``sample_mflix.movies`` collection.
64-
65-
.. code-block:: php
66-
:emphasize-lines: 6, 10
67-
68-
<?php
69-
70-
namespace App\Models;
71-
72-
use MongoDB\Laravel\Eloquent\Model;
73-
use Laravel\Scout\Searchable;
74-
75-
class Movie extends Model
76-
{
77-
use Searchable;
78-
79-
protected $connection = 'mongodb';
80-
}
81-
82-
Configure Scout Integration
83-
---------------------------
84-
85-
Ensure that your application is configured to use MongoDB as its
86-
database connection. To learn how to configure MongoDB, see the
87-
:ref:`laravel-quick-start-connect-to-mongodb` section of the Quick Start
88-
guide.
89-
90-
To configure Scout in your application, create a file named
91-
``scout.php`` in your application's ``config`` directory. Paste the
92-
following code into the file to configure Scout:
93-
94-
.. code-block:: php
95-
:caption: config/scout.php
96-
97-
<?php
98-
99-
return [
100-
'driver' => env('SCOUT_DRIVER', 'mongodb'),
101-
102-
'mongodb' => [
103-
'connection' => env('SCOUT_MONGODB_CONNECTION', 'mongodb'),
104-
],
105-
106-
'prefix' => env('SCOUT_PREFIX', 'scout_'),
107-
];
108-
109-
The preceding code specifies the following configuration:
110-
111-
- Uses MongoDB as the default search driver
112-
113-
- Specifies ``scout_`` as the prefix for the collection name of the
114-
searchable collection used by Scout
115-
116-
.. tip:: Queueing
117-
118-
When using Scout, consider configuring a queue driver to reduce
119-
response times for your application's web interface. To learn more,
120-
see the `Queuing section
121-
<https://laravel.com/docs/{+laravel-docs-version+}/scout#queueing>`__
122-
of the Laravel Scout documentation and the :ref:`laravel-queues` guide.
123-
124-
Create the Search Index
125-
-----------------------
126-
127-
After you configure Scout and set your default search driver, you can
128-
create your searchable collection and search index by running the
129-
following command:
130-
131-
.. code-block:: bash
132-
133-
php artisan scout:index 'App\Models\Movie'
134-
135-
Because you set MongoDB as the default search driver, the preceding
136-
command creates the search collection with an Atlas Search index in your
137-
MongoDB database. The collection is named ``scout_movies``, based on the prefix
138-
set in the preceding section. The Atlas Search index is named ``scout``
139-
and has the following configuration:
140-
141-
.. code-block:: json
142-
143-
{
144-
"mappings": {
145-
"dynamic": true
146-
}
147-
}
148-
149-
.. note::
150-
151-
It generally takes up to a minute for MongoDB to create and finalize
152-
an Atlas Search index, so the ``scout:index`` command might not
153-
return a success message immediately.
154-
155-
Import Your Data into the Searchable Collection
156-
-----------------------------------------------
157-
158-
You can use Scout to replicate data from a source collection into a
159-
searchable collection. The following command replicates and indexes data
160-
from the ``movies`` collection into the ``scout_movies`` collection
161-
created in the preceding section:
162-
163-
.. code-block:: bash
164-
165-
php artisan scout:import 'App\Models\Movie'
166-
167-
The documents are automatically indexed for Atlas Search queries.
168-
169-
Select Fields to Import
170-
~~~~~~~~~~~~~~~~~~~~~~~
171-
172-
You might not need all the fields from your source documents in your
173-
searchable collection. Limiting the fields you replicate can improve
174-
your application's speed and performance.
175-
176-
You can select specific fields to import by defining the
177-
``toSearchableArray()`` method in your Eloquent model class. The
178-
following code demonstrates how to define ``toSearchableArray()`` to
179-
select only the ``plot`` and ``title`` fields for replication:
180-
181-
.. code-block:: php
182-
183-
class Movie extends Model
184-
{
185-
....
186-
public function toSearchableArray(): array
187-
{
188-
return [
189-
'plot' => $this->plot,
190-
'title' => $this->title,
191-
];
192-
}
193-
}
194-
195-
Use an External Search Engine
196-
-----------------------------
44+
You can use Laravel Scout only when you connect to MongoDB Atlas
45+
clusters. This feature is not available for self-managed or
46+
serverless deployments.
47+
48+
Scout for Atlas Search Tutorial
49+
-------------------------------
50+
51+
This section demonstrates how to use the Scout integration in your
52+
application to support Atlas Search queries.
53+
54+
.. procedure::
55+
:style: connected
56+
57+
.. step:: Install Scout package
58+
59+
Before you can use Scout in your application, run the following
60+
command from your application's root directory to install Laravel Scout:
61+
62+
.. code-block:: bash
63+
64+
composer require laravel/scout
65+
66+
.. step:: Add the Searchable trait to your model
67+
68+
Add the ``Laravel\Scout\Searchable`` trait to an Eloquent model to make
69+
it searchable. The following example adds this trait to the ``Movie``
70+
model, which represents documents in the ``sample_mflix.movies``
71+
collection:
72+
73+
.. code-block:: php
74+
:emphasize-lines: 6, 10
75+
76+
<?php
77+
78+
namespace App\Models;
79+
80+
use MongoDB\Laravel\Eloquent\Model;
81+
use Laravel\Scout\Searchable;
82+
83+
class Movie extends Model
84+
{
85+
use Searchable;
86+
87+
protected $connection = 'mongodb';
88+
}
89+
90+
.. step:: Configure Scout in your application
91+
92+
Ensure that your application is configured to use MongoDB as its
93+
database connection. To learn how to configure MongoDB, see the
94+
:ref:`laravel-quick-start-connect-to-mongodb` section of the Quick Start
95+
guide.
96+
97+
To configure Scout in your application, create a file named
98+
``scout.php`` in your application's ``config`` directory. Paste the
99+
following code into the file to configure Scout:
100+
101+
.. code-block:: php
102+
:caption: config/scout.php
103+
104+
<?php
105+
106+
return [
107+
'driver' => env('SCOUT_DRIVER', 'mongodb'),
108+
109+
'mongodb' => [
110+
'connection' => env('SCOUT_MONGODB_CONNECTION', 'mongodb'),
111+
],
112+
113+
'prefix' => env('SCOUT_PREFIX', 'scout_'),
114+
];
115+
116+
The preceding code specifies the following configuration:
117+
118+
- Uses MongoDB as the default search driver
119+
- Specifies ``scout_`` as the prefix for the collection name of the
120+
searchable collection
121+
122+
.. tip:: Queueing
123+
124+
When using Scout, consider configuring a queue driver to reduce
125+
response times for your application's web interface. To learn more,
126+
see the `Queuing section
127+
<https://laravel.com/docs/{+laravel-docs-version+}/scout#queueing>`__
128+
of the Laravel Scout documentation and the :ref:`laravel-queues` guide.
129+
130+
.. step:: Create the Atlas Search index
131+
132+
After you configure Scout and set your default search driver, you can
133+
create your searchable collection and search index by running the
134+
following command from your application's root directory:
135+
136+
.. code-block:: bash
137+
138+
php artisan scout:index 'App\Models\Movie'
139+
140+
Because you set MongoDB as the default search driver, the preceding
141+
command creates the search collection with an Atlas Search index in your
142+
MongoDB database. The collection is named ``scout_movies``, based on the prefix
143+
set in the preceding section. The Atlas Search index is named ``scout``
144+
and has the following configuration:
145+
146+
.. code-block:: json
147+
148+
{
149+
"mappings": {
150+
"dynamic": true
151+
}
152+
}
153+
154+
.. note::
155+
156+
MongoDB can take up to a minute to create and finalize
157+
an Atlas Search index, so the ``scout:index`` command might not
158+
return a success message immediately.
159+
160+
.. step:: Import data into the searchable collection
161+
162+
You can use Scout to replicate data from a source collection into a
163+
searchable collection. The following command replicates and indexes data
164+
from the ``movies`` collection into the ``scout_movies`` collection
165+
created in the preceding section:
166+
167+
.. code-block:: bash
168+
169+
php artisan scout:import 'App\Models\Movie'
170+
171+
The documents are automatically indexed for Atlas Search queries.
172+
173+
.. tip:: Select Fields to Import
174+
175+
You might not need all the fields from your source documents in your
176+
searchable collection. Limiting the fields you replicate can improve
177+
your application's speed and performance.
178+
179+
You can select specific fields to import by defining the
180+
``toSearchableArray()`` method in your Eloquent model class. The
181+
following code demonstrates how to define ``toSearchableArray()`` to
182+
select only the ``plot`` and ``title`` fields for replication:
183+
184+
.. code-block:: php
185+
186+
class Movie extends Model
187+
{
188+
....
189+
public function toSearchableArray(): array
190+
{
191+
return [
192+
'plot' => $this->plot,
193+
'title' => $this->title,
194+
];
195+
}
196+
}
197+
198+
.. TODO Use an External Search Engine
199+
.. -----------------------------
197200

198201
.. TODO https://jira.mongodb.org/browse/DOCSP-45125

0 commit comments

Comments
 (0)