<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0">
  <channel>
    <title><![CDATA[Lily Adler - Elasticsearch Labs]]></title>
    <description><![CDATA[Articles and tutorials from the Search team at Elastic]]></description>
    <copyright><![CDATA[© 2026. Elasticsearch B.V. All Rights Reserved]]></copyright>
    <image>
      <title><![CDATA[Lily Adler - Elasticsearch Labs]]></title>
      <url>https://static-www.elastic.co/v3/assets/bltefdd0b53724fa2ce/blt1121c0bf0e8a6e65/6a88da6340a1841030ef456f/search-labs-thumbnail.png</url>
      <link>https://www.elastic.co/search-labs/author/lily-adler</link>
    </image>
    <link>https://www.elastic.co/search-labs/author/lily-adler</link>
    <atom:link href="https://www.elastic.co/search-labs/rss/author/lily-adler.xml" rel="self" type="application/rss+xml"/>
    <language><![CDATA[en]]></language>
    <lastBuildDate>Sun, 20 Sep 2026 11:46:23 GMT</lastBuildDate>
  <item>
    <title><![CDATA[An open‑source Hebrew analyzer for Elasticsearch lemmatization]]></title>
    <description><![CDATA[An open-source Elasticsearch 9.x analyzer plugin that improves Hebrew search by lemmatizing tokens in the analysis chain for better recall across Hebrew morphology.]]></description>
    <content:encoded><![CDATA[<p>Hebrew is morphologically rich: Prefixes, inflections, and clitics make exact-token search brittle. This project provides an open-source Hebrew analyzer plugin for Elasticsearch 9.x that performs neural lemmatization in the analysis chain, using an embedded DictaBERT model executed in-process via ONNX Runtime with an INT8-quantized model.</p><h2><strong>Quick start</strong></h2><p>Download the relevant <a href="https://github.com/liladler/elasticsearch-analysis-hebrew-plugin/releases">release</a> or build and install (Linux build script generates Elasticsearch‑compatible zip):</p>./scripts/build_plugin_linux.sh<p>Install in Elasticsearch:</p>/path/to/elasticsearch/bin/elasticsearch-plugin install file:///path/to/heb-lemmas-embedded-plugin-&lt;ES_VERSION&gt;.zip<p>Test:</p>curl -k -X POST "https://localhost:9200/_analyze" \
  -H "Content-Type: application/json" \
  -u "elastic:&lt;password&gt;" \
  -d '{"tokenizer":"whitespace","filter":["heb_lemmas","heb_stopwords"],"text":"הילדים אוכלים את הבננות"}'<h2>
Why Hebrew search is different</h2><p>Hebrew is morphologically rich: Prefixes, suffixes, inflection, and clitics all collapse into a single surface form. That makes naive tokenization insufficient. Without true lemmatization, search quality suffers; users miss relevant results due to simple variations in form. This project tackles that by embedding a Hebrew lemmatization model inside the analyzer itself, so every token passes through a neural model before indexing and querying.</p><h3>Example</h3><p>Users may search for the lemma “בית” (house), but documents might contain:</p><ul><li><p>בית (a house)</p></li><li><p>בבית (in the house)</p></li><li><p>לבית (to the house)</p></li><li><p>בבתים (in houses)</p></li><li><p>לבתים (to houses)</p></li></ul><p>Without lemmatization, these become different surface tokens; lemmatization normalizes them toward the same lemma (בית), improving recall:</p><img src="https://static-www.elastic.co/v3/assets/bltefdd0b53724fa2ce/bltbce7cc588b978eca/6a170e4facf0888338be9bec/d3dfd40569b3f4bfc79df639a49ae995e92b0bc1-1600x983.png" alt="Hebrew analyzer for Elasticsearch lemmatization" /><h2>What this plugin does</h2><p>Rather than relying on rule-based stemming, the analyzer runs a Hebrew lemmatization model as part of the Elasticsearch analysis chain and emits one normalized lemma per token. Because the model is neural, it can use local context within each analyzed segment to choose a lemma in ambiguous cases—while still producing stable tokens that work well for indexing and querying. The analyzer:</p><ul><li><p>Runs a Hebrew lemmatization model inside Elasticsearch.</p></li><li><p>Produces better normalized tokens for Hebrew text.</p></li><li><p>Supports stopwords and standard analyzer pipelines.</p></li></ul><h2>The result: Fast, reliable lemmatization</h2><p>This analyzer is optimized for real‑world throughput:</p><ul><li><p>ONNX Runtime in‑process inference.</p></li><li><p>INT8-quantized model for lower latency and memory footprint.</p></li><li><p>Java Foreign Function Interface (FFI) for high‑performance native inference.</p></li></ul><p>The result: fast, reliable lemmatization with predictable operational behavior.</p><p>To evaluate performance, we ran a benchmark in a Docker container (4 cores, 12 GB RAM) on 1 million large documents (5.7 GB of data) from the Hebrew Wikipedia dataset. You’ll find the results below:</p><p>Metric (search)</p><p>Task</p><p>Value</p><p>Unit</p><p>Min throughput</p><p>hebrew-query-search</p><p>409.75</p><p>ops/s</p><p>Mean throughput</p><p>hebrew-query-search</p><p>490.65</p><p>ops/s</p><p>Median throughput</p><p>hebrew-query-search</p><p>491.85</p><p>ops/s</p><p>Max throughput</p><p>hebrew-query-search</p><p>496.13</p><p>ops/s</p><p>50th percentile latency</p><p>hebrew-query-search</p><p>7.02242</p><p>ms</p><p>90th percentile latency</p><p>hebrew-query-search</p><p>10.7338</p><p>ms</p><p>99th percentile latency</p><p>hebrew-query-search</p><p>19.0406</p><p>ms</p><p>99.9th percentile latency</p><p>hebrew-query-search</p><p>27.165</p><p>ms</p><p>50th percentile service time</p><p>hebrew-query-search</p><p>7.02242</p><p>ms</p><p>90th percentile service time</p><p>hebrew-query-search</p><p>10.7338</p><p>ms</p><p>99th percentile service time</p><p>hebrew-query-search</p><p>19.0406</p><p>ms</p><p>99.9th percentile service time</p><p>hebrew-query-search</p><p>27.165</p><p>ms</p><p>Error rate</p><p>hebrew-query-search</p><p>0</p><p>%</p><h2>Open source and Elastic‑ready</h2><p>The plugin is fully open source and works on:</p><ul><li><p>Elastic open‑source distributions.</p></li><li><p>Elastic Cloud.</p></li></ul><p>You can build it yourself or download prebuilt releases and install it like any other plugin.</p><p>To upload the analyzer plugin to Elastic Cloud, navigate to the <strong>Extensions</strong> section within your Elastic Cloud console and proceed with the upload.</p><img src="https://static-www.elastic.co/v3/assets/bltefdd0b53724fa2ce/blt63c562ad175596ae/6a170e517d8d6737f070e7ca/e2e8731aeb884e91624f2c8c0998cf8de08a16e3-1402x1600.png" alt="Open source and Elastic‑ready for Hebrew analyzer for Elasticsearch lemmatization" /><h2>Credits</h2><p>This project is a fork of the Korra ai Hebrew analysis plugin (MIT), which was implemented by <a href="http://Korra.ai">Korra.ai</a> with funding and guidance from the National NLP Program led by MAFAT and the Israel Innovation Authority.</p><p>This fork focuses on Elasticsearch 9.x compatibility and running lemmatization fully in-process via ONNX Runtime, using an INT8‑quantized model and bundled Hebrew stopwords. Lemmatization is powered by DictaBERT <a href="https://huggingface.co/dicta-il/dictabert-lex"><code>dicta-il/dictabert-lex</code></a> (CC‑BY‑4.0).</p><p>Huge thanks to the Dicta team for making high-quality Hebrew natural language processing (NLP) models available to the community.</p><h2>Links</h2><ul><li><p><a href="https://github.com/liladler/elasticsearch-analysis-hebrew-plugin">GitHub repo</a></p></li><li><p><a href="https://github.com/liladler/elasticsearch-analysis-hebrew-plugin/releases">Releases</a></p></li></ul>]]></content:encoded>
    <link>https://www.elastic.co/search-labs/blog/elasticsearch-lemmatization-hebrew-analyzer</link>
    <guid isPermaLink="true">https://www.elastic.co/search-labs/blog/elasticsearch-lemmatization-hebrew-analyzer</guid>
    <category><![CDATA[Relevance]]></category>
    <dc:creator><![CDATA[Lily Adler]]></dc:creator>
    <enclosure url="https://static-www.elastic.co/v3/assets/bltefdd0b53724fa2ce/blte49ad43c2e28fd37/6a170e530e2e490f5741a1bd/8d9f79cec59d89f4e14657db7df846ed3104a2da-1024x565.png" length="0" type="image/png"/>
    <pubDate>Tue, 17 Feb 2026 00:00:00 GMT</pubDate>
  </item>
  </channel>
</rss>