Power Apps Search Series – Custom Search Analyzers for Precision Matching

In previous posts, we used the default indexing behavior of Dataverse. But what if your data needs custom tokenization, filters, or language handling?

Enter Custom Search Analyzers a way to control how your data is indexed and searched.


What Are Search Analyzers?

Search analyzers define how text fields are:

  • Tokenized (split into searchable pieces)
  • Normalized (e.g., lowercased, stripped of diacritics)
  • Filtered (e.g., stemming, stop words)

Why Customize?


How to Define a Custom Analyzer

Custom analyzers are defined at the column level using the Web API or SDK. They are applied only to searchable text columns.

Example Request:

PATCH https://<env>.crm.dynamics.com/api/data/v9.2/EntityDefinitions(LogicalName='account')/Attributes(LogicalName='new_productcode')
Content-Type: application/json

{
  "SearchAnalyzer": "Keyword"
}

Built-in Options

You can also set SearchAnalyzer during column creation.


Changing an Existing Analyzer

You must disable search, update the analyzer, then re-enable search on the column.

PATCH /Attributes(LogicalName='new_productcode')
{
  "IsSearchable": false
}

Then update the SearchAnalyzer and re-enable IsSearchable: true.

Changing analyzers triggers a re-index of that column.


Testing Custom Analyzer Behavior

After applying a custom analyzer:

  • Use the SearchQuery API to see how terms are matched
  • Check token behavior using search suggestions
  • Validate multilingual relevance where applicable

Best Practices


When to Use Custom vs Standard


Bonus Tip: Analyzer & Relevance

Changing the analyzer changes how ranking behaves e.g., exact matches may get higher weight with Keyword, while fuzzy matches benefit from Standard.


Leave a comment