Background Image for Strict and Permissive Analyzers

Permissive and Strict Analyzers to Filter and Boost Results in ElasticSearch

01/09/2023

ElasticSearch, a powerful and versatile search and analytics engine, has emerged as a cornerstone technology for managing and querying large-scale data with unprecedented speed and precision. However, as the size and complexity of data repositories continue to grow, so do the challenges associated with retrieving the most relevant results.

How to deal with it? You can easily optimize search outcomes by using permissive and strict analyzers to fine-tune result filtering and boosting.

The Difference Between Permissive and Strict Analyzers

Using a boolean query we can take different occurrence types. Some of them are:

  • must – The clause (query) must appear in matching documents and will contribute to the score.
  • should – The clause (query) should appear in the matching document.

Permissive query rules used in “must” can be treated like a filter that will be responsible for picking matched documents from index. It aims to broaden the scope of search results by accommodating variations in spelling, stemming, and synonyms, ensuring that users encounter a comprehensive array of relevant documents.

Strict query rules used in “should” can be treated like some kind of booster that will push documents higher in the relevancy position because matching documents will get a higher score.

How to Use it?

Let’s start from preparing permissive and strict analyzers:

“permissive": {
   "char_filter": [
       "html_strip"
   ],
   "tokenizer": "icu_tokenizer",
   "filter": [
       "english_possessive_stemmer",
       "english_stemmer",
       "custom_length"
   ]
}

And now strict analyzer:

"strict": {
   "char_filter": [
       "html_strip"
   ],
   "tokenizer": "icu_tokenizer",
   "filter": [
       "english_possessive_stemmer",
       "custom_length"
   ]
}

To keep examples as small as possible please note only one difference between permissive and strict analyzer is one additional filter “english_stemmer”.

Now let’s continue to index structure definition. In order to keep different analyzed contents inside the index we will use “fields” feature.

"name": {
   "type": "text",
   "analyzer": "permissive",
   "fields": {
       "strict": {
           "type": "text",
           "analyzer": "strict"
       }
   }
},
"description": {
   "type": "text",
   "analyzer": "permissive",
   "fields": {
       "strict": {
           "type": "text",
           "analyzer": "strict"
       }
   }
},

And finally let’s go build our query that will use “must”, “should” and different analyzers to filter out and boost results.

"query": {
 "bool": {
   "must": [
     {
       "multi_match": {
         "query": "swimming",
         "fields": [
           "name",
           "description"
         ],
         "analyzer": "permissive",
     }
   ],
   "should": [
     {
       "multi_match": {
         "query": "swimming",
         "fields": [
           "name.strict",
           "description.strict"
         ],
         "analyzer": "strict",
       }
     }
   ]
 }
}

In the example all documents that contain any kind of “swim” form of verb like “swimming”, “swim”, “swam” will be picked up by “must” rules because of permissive analyzer keep “english_stemmer” filter that will reduce english verbs to their root form. Using the same analyzer in query time will always reduce input term to root form.

On the other hand, a strict analyzer that does not have an “english_stemmer” filter will search documents that have exactly the same form as the customer is trying to search. But as a strict analyzer is used in the “should” part of the query it will not filter out products that do not match. It will give higher scores to products that match terms in the same form.

To give more ideas how to use permissive and strict methods please keep in mind that any of the available filters can be used to build different analyzers.

Good to Remember

  • Synonyms for example is also a good filter that works very well with permissive and strict analyzers.
  • On top of that please remember “should” can have multiple query rules. Each of the query rules can use a different strict analyzer.
  • Method is very flexible and very efficient in order to provide better search experience and better results to the customer.
Ja
Portrait of Jakub Wachol, back-end developer and article author, smiling and wearing glasses, with a professional and friendly appearance, against a white background.
Jakub Wachol
Back-end Developer

Latest articles

A conceptual image contrasting AI technology with environmental emissions, featuring a microchip symbol for AI and clouds symbolizing CO2 emissions above industrial buildings.

Innovations | 22/11/2024

How AI is Helping Companies Track CO2 Emissions?

Bernhard Huber

Organizations face mounting pressure from governments, consumers, and stakeholders to reduce their carbon footprints. Carbon accounting, the practice of tracking, measuring, and reporting greenhouse gas (GHG) emissions, has become a critical tool in this endeavor. With 90% of Fortune 500 companies committed to sustainability goals, the demand for effective carbon accounting solutions is surging. However, companies often grapple with complex supply chains and a lack of real-time data, making accurate carbon accounting a daunting task. This is where technology, particularly Artificial Intelligence, enters the scene. AI offers a powerful toolkit for automating and optimizing emission tracking, identifying inefficiencies, and providing actionable insights.

Read more
Illustration that symbolizes the importance of governance in ESG

Business | 15/11/2024

Governance in ESG: Why Strong Leadership is Key to Sustainability?

Łukasz Kopaczewski

While all three pillars—environmental, social, and governance—are essential, governance often plays the most foundational role. Governance, which includes ethical leadership, transparency, and accountability, ensures that ESG efforts are not just statements on paper but integrated into a company’s everyday decisions. Notably, a recent study found that 39% of companies feel they perform adequately on governance, indicating significant room for improvement​.

Read more
Illustration to the article on Making Data-Driven Decision and AI

Business | 08/11/2024

Making Data-Driven Decisions: How Artificial Intelligence Can Help You Avoid Common Pitfalls

Agata Pater

Relying solely on intuition in business can often mean missing out on big opportunities. Consider Netflix as a prime example. By analyzing over 30 million daily 'plays' and countless subscriber ratings and searches, Netflix pinpointed exactly what viewers wanted, leading to the creation of hit series like House of Cards. This data-driven approach didn’t just increase viewer engagement; it revolutionized the entertainment industry’s approach to content creation. Embracing Data-Driven Decision Making can similarly empower companies to craft more precise strategies, avoid common pitfalls, and make choices that resonate with actual market demand.

Read more