Repository navigation
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_exceptionand 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
SemanticQueryis omitted. Previously it only kicked in as a side effect of settingSemanticQuery, 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.Anyinstead ofSearchMode.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 newSearchModeoption onAzureSearchQueryOptions.
📦 Packages
Azure Search
- v9.3.2 (Umbraco 17) - https://www.nuget.org/packages/ExamineX.AzureSearch.Umbraco/9.3.2
- v10.0.1 (Umbraco 18) - https://www.nuget.org/packages/ExamineX.AzureSearch.Umbraco/10.0.1
Elasticsearch
- v6.3.2 (Umbraco 17) - https://www.nuget.org/packages/ExamineX.Elasticsearch.Umbraco/6.3.2
- v7.0.1 (Umbraco 18) - https://www.nuget.org/packages/ExamineX.Elasticsearch.Umbraco/7.0.1