No results are returned when searching for a specific term because it is a Elasticsearch stopword

Issue

  • When searching for a specific term, no results are returned despite the fact that there should be some matches.
  • How to configure Elasticsearch stopwords.

Environment

  • Liferay DXP 7.07.4
  • Elasticsearch 2.x7.x

Resolution

  • By default, Elasticsearch removes some words from token streams. These words are known as stop words.
  • If the search term you are using appears in the list for a given language, say Spanish, you need to customize your stop word list to allow that word and, therefore, get results when searching for that term.
  • To tackle this, you can redefine your analyzer for that language and customize the stop filter.

How to reimplement you language-x analyzer customizing the stop filter

  • Imagine we are using Spanish language and we want to remove "nada" (meaning nothing) from the list.
  • First of all, download the current list (spanish_stop.txt) and edit it as desired. In our case, removing the line where "nada" appears.
  • Then, copy the spanish analyzer from Elasticsearch reference and customize it to meet your needs. For example (it may need to be adapted to your own use case):
    {
    "analysis": {
    "filter": {
    "spanish_stop": {
    "type": "stop",
    "stopwords_path": "spanish_stop.txt"
    },
    "spanish_stemmer": {
    "type": "stemmer",
    "language": "light_spanish"
    }
    },
    "analyzer": {
    "spanish": {
    "tokenizer": "standard",
    "filter": [
    "lowercase",
    "spanish_stop",
    "spanish_stemmer"
    ]
    }
    }
    }
    }
    Note that we have changed stopwords for stopwords_path (see Configurable parameters).
  • Once our analyzer is ready, we have to apply it:
    1. Navigate to Control Panel → Configuration → System Settings
    2. Find the Elasticsearch entry. Click to edit.
    3. Go to "Additional Index Configurations" and copy the JSON fragment with your custom analyzer there.
    4. Save your changes.
    5. Execute a full reindex in order to apply your new analyzer.

Additional Information

这篇文章有帮助吗?
0 人中有 0 人觉得有帮助