Skip to content

9.3.2, 10.0.1 for Azure Search & 6.3.2, 7.0.1 for Elasticsearch

Latest

Choose a tag to compare

@Shazwazza Shazwazza released this 06 Oct 16:54
ff1d58f

Patch releases for the Umbraco 17 and 18 lines of ExamineX for Azure Search and ExamineX for Elasticsearch. Same fixes as the 6.3.0 / 7.2.0 / 8.2.0 release, and 10.0.1 also gets the semantic ranking fixes that shipped in 9.3.1.

🐛 Rebuilds silently losing documents

There were a few ways a rebuild could end up indexing a lot less than it should, or nothing at all, without any obvious error. Umbraco sends content to the index in batches of 10,000 and if anything in a batch threw, that entire batch was dropped.

Elasticsearch

  • A field whose name only differed by case from one already in the mapping was treated as existing when ensuring fields, but as missing when building the bulk request. That threw and the batch was lost.
  • Index names are only precise to the second, so two rebuilds within the same second would generate the same name and the second one failed with resource_already_exists_exception and did nothing.
  • If a field can't be resolved now, the live mapping is reloaded and the fields are ensured again. If it still can't be resolved, the field is logged and everything else in the batch is indexed.

Azure Search

  • Field references are cached, so if another instance changed the index the cache could go stale and a field would fail to resolve, which threw away the batch. Now the index definition is re-read and the fields are ensured again, and anything that still can't be resolved is logged instead of taking the rest of the batch with it.

🐛 Index Info showing type names instead of values

In Settings -> ExamineX -> Index Info, IncludeItemTypes, ExcludeItemTypes, IncludeFields and ExcludeFields could show something like <>z__ReadOnlyArray`1[System.String] instead of the actual list. They now show the values. Fixes #139

🐛 Semantic ranking fixes for Umbraco 18 (Azure Search 10.0.1)

These were fixed for Umbraco 17 in 9.3.1 and are now in the 10.x line too:

  • Semantic ranking now applies when SemanticQuery is omitted. Previously it only kicked in as a side effect of setting SemanticQuery, so if you relied on the fallback to the main search text you'd silently get plain keyword (BM25) results with no reranking.
  • Semantic queries now default to SearchMode.Any instead of SearchMode.All. Requiring every term to match collapsed the candidate set for natural language questions, so there was very little for semantic ranking to work with. You can override this with the new SearchMode option on AzureSearchQueryOptions.

📦 Packages

Azure Search

Elasticsearch