Configure Index
Optimize the search experience# A
Generate index settings#
Performance is important. On top of that, for a search to be successful, results need to be relevant to the user. Scout Extended provides a scout:optimize
Artisan command that you may use to optimize the search experience based on information from the searchable
class:
$
php artisan scout:optimize
The Artisan command scout:optimize
tries to generate the settings of your searchable
class index, but you may need to edit those settings in config/scout-articles.php
:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
return [
/*
|--------------------------------------------------------------------------
| Searchable Attributes
|--------------------------------------------------------------------------
|
| Limits the scope of a search to the attributes listed in this setting. Defining
| specific attributes as searchable is critical for relevance because it gives
| you direct control over what information the search engine should look at.
|
| Supported: Null, Array
| Example: ["name", "email", "unordered(city)"]
|
*/
'searchableAttributes' => ['subject', 'body', 'slug', 'author_name', 'author_email'],
/*
|--------------------------------------------------------------------------
| Custom Ranking
|--------------------------------------------------------------------------
|
| Custom Ranking is about leveraging business metrics to rank search
| results - it's crucial for any successful search experience. Make sure that
| only "numeric" attributes are used, such as the number of sales or views.
|
| Supported: Null, Array
| Examples: ['desc(comments_count)', 'desc(views_count)']
|
*/
'customRanking' => ['asc(sales_count)', 'desc(views_count)', 'desc(created_at)'],
// ...
];
Feel free to dig further into all Algolia settings to optimize the search experience for your end users.
Synchronize index settings#
Once you have verified the settings file, all you need to do is synchronize the settings with Algolia using the scout:sync
Artisan command:
$
php artisan scout:sync
You may also edit settings using the Algolia Dashboard. Make sure to apply these settings locally with the scout:sync
Artisan command if you do this, or your changes will be lost.
Custom settings path#
By default, all settings live in config/scout-{index-name}.php
. You can change this by setting the settings_path
in the config/scout.php
configuration file:
1
2
3
4
5
'algolia' => [
'id' => env('ALGOLIA_APP_ID', ''),
'secret' => env('ALGOLIA_SECRET', ''),
'settings_path' => config_path('customPath'),
],
Custom index name# A
To customize the index name, you should implement
the searchableAs
method
in your searchable
class.
By default, the searchableAs
method concatenates the prefix
configuration key defined in config/scout.php
and the table name. As usual, you can change this behavior:
1
2
3
4
5
6
7
8
9
class Article extends Model
{
use Searchable;
public function searchableAs()
{
return config('scout.prefix').'my_custom_name';
}
}
Per-environment index name#
Scout reads the prefix from your environment variables. If you need different indices for each environment, you should define a different PREFIX
in your .env
file.
$
SCOUT_PREFIX=demo_PROD_