Blog Post

Microsoft Foundry Blog
10 MIN READ

Choosing the Right Language Analyzer for Azure AI Search

abhishreeshetty's avatar
May 29, 2026

Up to 120% better keyword search quality with the right language analyzer in Azure AI Search

By Abhishree Shetty, Alec Berntson, Lihang Li

A language analyzer is a specific type of text analyzer that performs lexical analysis using the linguistic rules of the target language. It applies language-specific rules to convert raw text chunks into searchable terms, handling aspects like word boundaries, word forms, and compound words.

I
f you build search experiences on Azure AI Search, the analyzer you choose directly affects the quality of keyword search results. Azure AI Search offers Lucene and Microsoft language analyzers covering 50+ languages, but there has been no systematic guidance on which to use or whether they matter at all. 

We compared Lucene, Microsoft, and no analyzer across 20 languages and 3 datasets. This post covers what we found, how customers use analyzers today, why results differ between Lucene and Microsoft, and how to pick the right one for your content. 

TL;DR 

  • Always use a language analyzer. +15% NDCG on average, up to +120% for morphologically complex languages.
  • Lucene and Microsoft are both strong. Differences are small; Microsoft has broader language coverage.
  • No latency penalty. Analyzer choice does not affect query search performance.
  • Some languages have a clear preference.  For example, German and Spanish consistently favor Lucene, while Chinese favors Microsoft. Read the post for complete per-language breakdown. 

Table of Contents

What Does a Language Analyzer Do?

By default, Azure AI Search uses a standard tokenizer that splits text on whitespace and punctuation and lowerscases everything. It has no understanding of language. A language analyzer adds linguistic intelligence to this process: 

Segmentation — Identifying word boundaries in languages that lack whitespace: 

서울에서 맛있는 음식점 추천해주세요 → 서울 / 맛있 / 음식점 / 추천 

Lemmatization — Reducing inflected words to their base form: 

fuimos, vamos, yendo → ir 

Compound decomposition — Breaking compound words into meaningful parts: 

Krankenhausverwaltungssystem → Kranken + haus + verwaltung + system 

Azure AI Search supports the following analyzer options: 

Option 

What it does 

Languages 

None (default) 

Apache Lucene Standard Analyzer. Performs whitespace + punctuation splitting, lowercase. No linguistic processing. 

N/A 

Lucene 

Open-source Apache Lucene language analyzers. Faster. Use stemming and stopword removal. 

~35 

Microsoft 

Proprietary Microsoft NLP technology (used in Office and Bing). Advanced capabilities including lemmatization, word decompounding, and entity recognition. 

50+ 

Custom 

User-defined combination of tokenizer, token filters, and character filters. 

Any 

Table 1: Language analyzer options in Azure AI Search

 

Here is how the three built-in options processes text across different languages: 

Language 

Input 

None 

Lucene 

Microsoft 

English 

items in conflict and did not sync 

items, in, conflict, and, did, not, sync 

item, conflict, did, sync 

item, items, conflict, do, did, synch, sync 

English 

Change display settings and brightness on Windows 11 

change, display, settings, and, brightness, on, windows, 11 

chang, displai, set, bright, window, 11 

change, display, setting, settings, brightness, window, windows, 11 

Korean 

서울에서 맛있는 음식점 추천해주세요 

서울에서, 맛있는, 음식점, 추천해주세요 

서울, 울에, 에서, 맛있, 있는, 음식, 식점, 추천, ... 

서울에서, 서울, 맛있는, 음식점, 음식, 추천해주세요, 추천, 주세요 

Spanish 

Los usuarios no pueden iniciar sesión 

los, usuarios, no, pueden, iniciar, sesión 

usuari, pueden, iniciar, sesion 

usuario, usuarios, no, poder, pueden, iniciar, sesion, sesión 

Swedish 

Snabbstart fungerar inte från datorn 

snabbstart, fungerar, inte, från, datorn 

snabbstart, funger, datorn 

snabbstart, snabb, start, fungera, fungerar, inte, från, dator, datorn 

 Table 2: How each analyzer tokenizes the same input text 

The tokens in Table 2 were generated using Azure AI Search Analyze API. You can try it yourself with your own text. 

Does It Even Matter? 

Out of 31 language–dataset combinations we tested, the standard tokenizer (None) never won. In every case, a language analyzer delivered better results. 

Strategy 

Avg NDCG@10 

vs None 

Microsoft 

0.4252 

+15.4% 

Lucene 

0.4177 

+13.4% 

None 

0.3684 

baseline 

Table 3: Average NDCG@10 across all 31 language–dataset combinations

Improvements vary by language. Some see massive lifts; others see modest gains: 

Language 

Dataset 

Best Analyzer 

NDCG@10 (Best) 

NDCG@10 (None) 

Lift 

Finnish 

Support 

Microsoft 

0.2752 

0.1253 

+119.6% 

Korean 

Support 

Lucene 

0.3252 

0.1520 

+113.9% 

Polish 

Support 

Microsoft 

0.2759 

0.1611 

+71.3% 

Spanish 

Support 

Lucene 

0.2469 

0.1596 

+54.7% 

Korean 

MIRACL 

Microsoft 

0.6895 

0.4624 

+49.1% 

Japanese 

MIML 

Lucene 

0.5348 

0.3806 

+40.5% 

Chinese 

MIML 

Microsoft 

0.5668 

0.4292 

+32.1% 

Table 4: Languages with the largest retrieval quality lift from using a language analyzer

Morphologically complex languages (Finnish, Korean, Polish) benefit the most — lifts exceed +70%. CJK languages also see large gains because they lack whitespace word boundaries. But the lift extends well beyond these: Arabic (+34%), Spanish (+55%), French (+18%), and Turkish (+14%) all see double-digit improvements. Even English on well-formatted content shows a +5.9% lift (MIML). On enterprise support content, the lift grows to +14.1%. 

Key takeaway: Always use a language analyzer.

What Do Customers Actually Do Today? 

We examined analyzer usage across Azure AI Search indexes. 

Metric 

Value 

Indexes using any language analyzer 

27.8% 

Microsoft-only share (among those who use one) 

64.8% 

Lucene-only share 

31.2% 

Mixed (both) share 

4.0% 

Table 5: Language analyzer adoption metrics

Among customers who do use an analyzer, behavior largely aligns with study findings: 

  • French: Customers favor Lucene, consistent with our results.
  • Korean: Customers favor Microsoft, also consistent.
  • English: Customers lean Microsoft (68.4%). Our study shows Microsoft wins 2 of 3 datasets for English, consistent with this preference. 

Key takeaway: Most customers today don't use a language analyzer.

Lucene vs Microsoft — The Full Picture 

Analyzer 

Wins (of 31) 

% of Optimal NDCG@10

Microsoft 

17 

96.7% 

Lucene 

14 

95.0% 

None 

0 

86.8% 

Table 6: NDCG@10 wins by analyzer across all 31 combinations

Microsoft wins more combinations overall, but the differences are often small. Here are some examples: 

  • English: Microsoft 0.9413 vs Lucene 0.9383 — difference of 0.0030 
  • Chinese: Microsoft 0.5668 vs Lucene 0.5646 — difference of 0.0022 

From the Support dataset: 

  • Danish: Microsoft 0.3044 vs Lucene 0.3028 — difference of 0.0016 
  • Korean: Lucene 0.3252 vs Microsoft 0.3218 — difference of 0.0034 

There is no meaningful quality difference between these two. 

Language coverage 

Microsoft analyzers support 50 languages; Lucene supports ~35. For 20+ languages, Microsoft is the only option: Croatian, Estonian, Gujarati, Hebrew, Hindi, Icelandic, Kannada, Latvian, Lithuanian, Malayalam, Malay, Marathi, Punjabi, Serbian, Slovak, Slovenian, Tamil, Telugu, Ukrainian, Urdu, and Vietnamese. 

Corpus type effects 

We define two content categories: 

  • Clean text: Well-formatted, edited content — academic papers, Wikipedia articles, curated knowledge bases. Minimal typos, consistent structure. 
  • Noisy text: User-generated or operational content — support tickets, short queries, product forums. Frequent typos, mixed languages, informal grammar. 

The choice between Lucene and Microsoft depends on which type your content resembles: 

Dataset 

Content Type 

Lucene Wins 

Microsoft Wins 

None Wins 

Lucene Avg. NDCG

Microsoft Avg. NDCG 

MIML 

Clean, multilingual multidomain docs 

4/6 

2/6 

0/6 

0.6845 

0.6359 

MIRACL 

Clean, Wikipedia passages 

5/7 

2/7 

0/7 

0.6444 

0.6425 

Support 

Noisy, Support tickets 

5/18 

13/18 

0/18 

0.2406 

0.2705 

Table 7: Analyzer performance by content type

On clean data, Lucene has an edge (+7.6% average NDCG over Microsoft on MIML). On noisy data, Microsoft wins decisively — 13 of 18 languages, with +12.4% higher average NDCG than Lucene.

Under the Hood — Why Results Differ 

The core difference is their approach to morphological analysis. 

Lucene 

Lucene language analyzers reduce words to short stems using rule-based algorithms (Porter, Snowball). By collapsing inflected forms to a common root, stemming increases recall — a query for attach will match documents containing attachments, attached, or attaching. This is particularly effective on clean, well-structured text where broader matching helps surface relevant content. 

The tradeoff is precision. On noisy text, stemming can be too aggressive: 

Input 

Lucene token 

Effect 

settings 

set 

Broader matching, but also collides with set, setup, setter 

brightness 

bright 

Matches more variants, but loses the specific noun form 

attachments 

attach 

Good for recall, but pulls in loosely related content 

Windows (Polish) 

winc 

Proper noun mangled by language-specific stemming rules 

Table 8: Examples of Lucene stemming behavior

Microsoft 

Microsoft analyzers preserve the original term and add normalized variants — for example, settings yields both settings and setting. This gives recall benefits similar to stemming while keeping the original form available for precise matching. 

Microsoft analyzers also: 

  • Preserve proper nouns: Windows stays Windows rather than being stemmed
  • Decompose compounds: Swedish snabbstart → snabb + start
  • Retain more stopwords: Where Lucene removes functional words like in, not, and, Microsoft keeps more of them 

Comparing on noisy text 

Consider a typical support query: "how to fix Windows settings not responding after update" 

  • None (9 tokens): how, to, fix, windows, settings, not, responding, after, update
  • Lucene (7 tokens): how, fix, window, set, respond, after, updat — drops to, not, windows; collapses settings → set and update → updat
  • Microsoft (10 tokens): how, fix, window, windows, setting, settings, respond, responding, after, update — keeps originals and adds normalized forms 

Lucene loses not (negation context) and settings becomes the generic set. Microsoft preserves the original terms and adds variants, keeping the query's meaning intact. 

On clean text, Lucene's stemming is mostly beneficial — broader matching helps recall. On noisy text, the same aggressiveness can compound the problem, which is why Microsoft tends to perform better on noisy data. 

Is There a Latency Cost during Search? 

Language analyzers run at both index time and query time, but the heavier processing happens during indexing. At query time, all three options produce identical p50 and p95 latency. We verified this across multiple languages under concurrent load. Your choice of analyzer will not affect search performance. 

Practical Recommendations 

Decision framework 

Figure 1: Decision framework for choosing a language analyzer in Azure AI Search

Language-specific overrides 

For three languages, our data is consistent across all datasets tested: 

Language 

Recommended 

Evidence 

Avg NDCG Margin 

German (de) 

Lucene 

Wins 2/2 datasets (MIML, Support) 

+0.042 

Spanish (es) 

Lucene 

Wins 3/3 datasets (MIML, MIRACL, Support) 

+0.040 

Chinese (zh) 

Microsoft 

Wins 2/2 datasets (MIML, Support) 

+0.010 

Table 9: Languages with a consistent analyzer preference across all datasets tested

For other languages, the best choice depends on your content type — Lucene tends to win on clean data, Microsoft on noisy data.
Note:
These results are based on our three test datasets. We recommend validating your own data using the Analyze API. 

Key Takeaways 

  1. Always configure a language analyzer. The biggest gain comes from using any analyzer vs None (+15% average). The Lucene-vs-Microsoft difference is secondary. 
  2. Both Lucene and Microsoft are safe choices. Always-Lucene captures 95.0% of optimal NDCG; Always-Microsoft captures 96.7%. 
  3. There is no latency penalty. Analyzer choice does not affect query performance. 
  4. Use per-field analyzers for multilingual indexes. Each language field should use its own analyzer for best results. 
  5. Microsoft is the broader default. 50 languages, meaning-preserving normalization, and the only option for 20+ languages. 

Appendix A: Datasets and Methodology 

Datasets 

We evaluated across three datasets chosen for their diversity in content type, language coverage, and query difficulty: 

Dataset 

Content Type 

Languages 

Queries 

Source 

MIML 

Multilingual industry documents across 10 domains (accounting, banking, government, healthcare-admin, healthcare-research, HR, industrial, insurance, legal, product-manuals) 

6 (de, en, es, fr, ja, zh) 

12,970 

Internal curated dataset with chunked documents (1024-token chunks) 

MIRACL 

Wikipedia passages across languages 

7 (ar, en, es, fr, ja, ko, ru) 

1,750 

MIRACL benchmark — widely used multilingual IR benchmark 

Support 

Real Microsoft support tickets and knowledge base articles 

18 (ar, da, de, en, es, fi, fr, it, ja, ko, nb, nl, pl, pt, ru, sv, tr, zh) 

16,178 

Microsoft Support corpus with Bing-sourced queries 

Table 10: Datasets used in this study

Hole filling 

In all three datasets, top-10 retrieved documents often include unjudged items ("holes"). We used GPT-4o to fill these holes: for each unjudged document, the model rates relevance on a 0–4 scale (ABYSMAL to IDEAL). Documents rated ≥ 2 (FAIR) are counted as relevant. This ensures NDCG@10 is computed over a complete set of judgments rather than penalizing unjudged documents. 

Metric 

We use NDCG@10 (Normalized Discounted Cumulative Gain at rank 10) as the primary metric throughout this post. It measures ranking quality — whether the most relevant documents are ranked highest in the top-10 results. 

Experiment setup 

  • 93 experiments: 31 language–dataset combinations × 3 analyzer types (None, Lucene, Microsoft)
  • Search service: Azure AI Search (BM25 retrieval, top-10 results)
  • Evaluation: Per-query metrics with paired statistical significance testing (t-test + Wilcoxon signed-rank) 

Appendix B: Detailed Results Per Dataset 

MIML (6 languages, 12,970 queries) 

Language 

Queries 

Lucene 

Microsoft 

None 

Winner 

Margin 

de 

2,462 

0.6858 

0.6087 

0.6170 

Lucene 

+0.069 

en 

1,493 

0.9383 

0.9413 

0.8888 

Microsoft 

+0.003 

es 

2,205 

0.6631 

0.5767 

0.6107 

Lucene 

+0.052 

fr 

2,199 

0.7203 

0.6106 

0.6126 

Lucene 

+0.108 

ja 

2,406 

0.5348 

0.5112 

0.3806 

Lucene 

+0.024 

zh 

2,205 

0.5646 

0.5668 

0.4292 

Microsoft 

+0.002 

Table 11: MIML: NDCG@10 per language and analyzer

MIRACL (7 languages, 1,750 queries) 

Language 

Queries 

Lucene 

Microsoft 

None 

Winner 

Margin 

ar 

250 

0.7008 

0.6876 

0.6284 

Lucene 

+0.013 

en 

250 

0.6334 

0.6213 

0.5963 

Lucene 

+0.012 

es 

250 

0.6305 

0.6120 

0.5613 

Lucene 

+0.018 

fr 

250 

0.6515 

0.6246 

0.5745 

Lucene 

+0.027 

ja 

250 

0.6589 

0.6772 

0.6525 

Microsoft 

+0.018 

ko 

250 

0.6327 

0.6895 

0.4624 

Microsoft 

+0.057 

ru 

250 

0.6033 

0.5850 

0.5120 

Lucene 

+0.018 

Table 12: MIRACL: NDCG@10 per language and analyzer

Support (18 languages, 16,178 queries) 

Language 

Queries 

Lucene 

Microsoft 

None 

Winner 

Margin 

ar 

772 

0.2619 

0.2791 

0.2080 

Microsoft 

+0.017 

da 

293 

0.3028 

0.3044 

0.2505 

Microsoft 

+0.002 

de 

2,691 

0.2223 

0.2156 

0.2113 

Lucene 

+0.007 

en 

1,000 

0.1065 

0.2122 

0.1860 

Microsoft 

+0.026 

es 

1,000 

0.2469 

0.2329 

0.1596 

Lucene 

+0.014 

fi 

129 

0.2522 

0.2752 

0.1253 

Microsoft 

+0.023 

fr 

1,000 

0.1954 

0.2726 

0.2241 

Microsoft 

+0.049 

it 

1,000 

0.2924 

0.2799 

0.2772 

Lucene 

+0.013 

ja 

1,000 

0.3127 

0.3329 

0.2922 

Microsoft 

+0.020 

ko 

1,000 

0.3252 

0.3218 

0.1520 

Lucene 

+0.003 

nb 

226 

0.2464 

0.2722 

0.2383 

Microsoft 

+0.026 

nl 

1,000 

0.2677 

0.2403 

0.2482 

Lucene 

+0.019 

pl 

526 

0.1587 

0.2759 

0.1611 

Microsoft 

+0.115 

pt 

1,000 

0.2222 

0.2349 

0.1914 

Microsoft 

+0.013 

ru 

1,000 

0.2731 

0.2916 

0.2739 

Microsoft 

+0.018 

sv 

541 

0.1744 

0.2961 

0.2502 

Microsoft 

+0.046 

tr 

1,000 

0.2412 

0.2848 

0.2504 

Microsoft 

+0.034 

zh 

1,000 

0.2281 

0.2461 

0.1952 

Microsoft 

+0.018 

Table 13: Support: NDCG@10 per language and analyzer

Updated May 26, 2026
Version 1.0
No CommentsBe the first to comment