Configure Elasticsearch stopwords
Contents
What are stopwords?
In general, stopwords are a language’s most common words that search engines filter out after processing text. Originally, when disk space and memory were extremely limited, every kilobyte saved meant a significant improvement in performance. Therefore, search engines achieved performance gains by ignoring certain words and keeping the index small.
Although we have more storage today, performance is still important. Elasticsearch, like other search engines, still use stopwords to improve performance.
You must manage your Elasticsearch stopwords using .csv
files located in the <your Magento install dir>/vendor/magento/module-elasticsearch/etc/stopwords
directory or the <your Magento install dir>/app/code/Magento/Elasticsearch/etc/stopwords/
directory, depending on how you installed the Magento software.
For more information about how Elasticsearch uses stopwords, see the following resources:
- Stopwords: Performance Versus Precision
- Pros and Cons of Stopwords
- Using Stopwords
- Stopwords and Performance
Configure stopwords
Elasticsearch stopwords are located in the <your Magento install dir>/vendor/magento/module-elasticsearch/etc/stopwords
directory. Magento ships with one .csv
file containing stopwords for our default locales and an additional file, stopwords.csv
, which has stopwords for any locale that is not represented by another .csv
file.
The default lifetime for stopwords file cache is 15 minutes.
See one of the following topics for more information:
Edit stopwords for an existing locale
To edit stopwords:
- Log in to your Magento server, or switch to the Magento file system owner.
-
Use a text editor to open a stopword file in the
<your Magento install dir>/vendor/magento/module-elasticsearch/etc/stopwords
directory..csv
files use the naming conventionstopwords_<locale_code>.csv
. For example, the German stopword file is namedstopwords_de_DE.csv
. -
Add words, remove words, or change words in the file.
(Each stopword in a file starts on a new line.)
- Save your changes and exit the text editor.
-
Clean the Magento configuration cache.
-
Magento Admin: System > Tools > Cache Management. Select the Configuration check box and, from the list above it, click Refresh. Click Submit to complete the action.
-
Command line: As the Magento file system owner, enter the following command:
php <your Magento install dir>/bin/magento magento cache:clean config
-
- Check the results by searching for terms on your storefront.x
Create stopwords for a new locale
To add stopwords for a locale:
- Log in to your Magento server, or switch to, the Magento file system owner.
-
Use a text editor to create a stopword file named
stopwords_<locale_code>.csv
in the<your Magento install dir>/vendor/magento/module-elasticsearch/etc/stopwords
directory.For example, to create stopwords for the Italian locale, name the file
stopwords_it_IT.csv
. - In your stopword file, make sure each stopword is on a separate line.
- Save your changes and exit the text editor.
- In the same directory, open
esconfig.xml
in a text editor. -
Add a line to
esconfig.xml
as follows:<LOCALE_CODE>stopwords_LOCALE_CODE.csv</LOCALE_CODE>
For example, to add an Italian stopword file, add the following line:
<it_IT>stopwords_it_IT.csv</it_IT>
- Save the changes to
esconfig.xml
and exit the text editor. -
Clean the Magento configuration cache.
-
Magento Admin: System > Tools > Cache Management. Select the Configuration check box and, from the list above it, click Refresh. Click Submit to complete the action.
-
Command line: As the Magento file system owner, enter the following command:
php <your Magento install dir>/bin/magento magento cache:clean config
-
- Check the results by searching for terms on your storefront.
Change the stopword directory
This section discusses how to optionally change the default stopword directory from one of the following:
<your Magento install dir>/vendor/magento/module-elasticsearch/etc/stopwords
<your Magento install dir>/app/code/Magento/Elasticsearch/etc/stopwords/
The location depends on how you installed the Magento software. If you cloned the Magento 2 GitHub repository, the path is under app/code
. If you installed a compressed archive or a metapackage, the path is under vendor
.
To change the directory:
-
As the Magento file system owner, open the Elasticsearch
di.xml
in a text editor.If you cloned the repository, it’s located at
app/code/Magento/Elasticsearch/etc/di.xml
If you got an archive or the metapackage, it’s located at
vendor/magento/module-elasticsearch/etc/di.xml
-
Change the value of
fileDir
to the desired directory:
Save your changes to di.xml
and exit the text editor.