Examine field definition problems

I’m struggling with my custom field added to the external index. I’ve added a new field as an int.

using System;
using Examine;
using Examine.Providers;
using Umbraco.Core;
using Umbraco.Core.Composing;

namespace MyApp.Composing
{
    public class ExamineComponent : IComponent
    {
        private readonly IExamineManager _examineManager;

        public ExamineComponent(IExamineManager examineManager)
        {
            this._examineManager = examineManager;
        }

        public void Initialize()
        {
            var index = this.GetIndex();

            CustomiseIndex(index);

            index.TransformingIndexValues += this.IndexProviderSetIsDeceased;
        }

        public void Terminate()
        {
            var index = this.GetIndex();

            index.TransformingIndexValues -= this.IndexProviderSetIsDeceased;
        }

        private BaseIndexProvider GetIndex()
        {
            if (!this._examineManager.TryGetIndex(Constants.UmbracoIndexes.ExternalIndexName, out var index))
            {
                throw new InvalidOperationException(
                    $"No index found by name {Constants.UmbracoIndexes.ExternalIndexName}");
            }

            if (!(index is BaseIndexProvider indexProvider))
            {
                throw new InvalidOperationException("Could not cast");
            }

            return indexProvider;
        }

        private static void CustomiseIndex(BaseIndexProvider index)
        {
            index.FieldDefinitionCollection.TryAdd(new FieldDefinition("isDeceasedFlag", FieldDefinitionTypes.Integer));
        }


        private void IndexProviderSetIsDeceased(object sender, IndexingItemEventArgs e)
        {
            var isDeceased = e.ValueSet.GetValue("isDeceased") as int?;
            if (isDeceased.HasValue)
            {
                e.ValueSet.Add("isDeceasedFlag", isDeceased.Value == 1 ? 1 : 0);
            }
        }
    }
}

However I keep getting this error at startup sometimes:

[InvalidOperationException: Could not perform a range query on the field isDeceasedFlag, it's value type is Examine.LuceneEngine.Indexing.FullTextType]
   Examine.LuceneEngine.Search.<>c__DisplayClass12_0`1.<RangeQueryInternal>b__0() in C:\Users\Shannon\Documents\_Projects\Examine\Examine\src\Examine\LuceneEngine\Search\LuceneSearchQuery.cs:115
   Examine.LuceneEngine.Search.LateBoundQuery.get_Wrapped() in C:\Users\Shannon\Documents\_Projects\Examine\Examine\src\Examine\LuceneEngine\Search\LateBoundQuery.cs:13
   Examine.LuceneEngine.Search.LateBoundQuery.ExtractTerms(ISet`1 terms) in C:\Users\Shannon\Documents\_Projects\Examine\Examine\src\Examine\LuceneEngine\Search\LateBoundQuery.cs:37
   Lucene.Net.Search.BooleanQuery.ExtractTerms(ISet`1 terms) in d:\Lucene.Net\FullRepo\trunk\src\core\Search\BooleanQuery.cs:504
   Examine.LuceneEngine.LuceneSearchResults.DoSearch(Query query, IEnumerable`1 sortField, Int32 maxResults) in C:\Users\Shannon\Documents\_Projects\Examine\Examine\src\Examine\LuceneEngine\LuceneSearchResults.cs:60
   Examine.LuceneEngine.Search.LuceneSearchQuery.Search(Int32 maxResults) in C:\Users\Shannon\Documents\_Projects\Examine\Examine\src\Examine\LuceneEngine\Search\LuceneSearchQuery.cs:159
   Examine.LuceneEngine.Search.LuceneBooleanOperation.Execute(Int32 maxResults) in C:\Users\Shannon\Documents\_Projects\Examine\Examine\src\Examine\LuceneEngine\Search\LuceneBooleanOperation.cs:46
   MyApp.Services.BaseSearchService`1.PagedResults(Int32 page, Int32 pageSize, IQueryExecutor executeQuery) in C:\dev\mfpa\MFPA\MFPA\Services\SearchService.cs:276

I could post my whole search code, but trust me it works (later). The crucial part is:

protected override IBooleanOperation FilterType(IQuery query)
{
    return this.NodeTypeFilter(query).And().Field(MfpaConstants.Examine.IsDeceasedFieldName, 0);
}

However when I re-publish the nodes in question, and reboot the app, then we’re all good again.

There’s nothing relevant that I can see in the error log on boots which result in this error.

Any help or ideas are appreciate.


This is a companion discussion topic for the original entry at https://our.umbraco.com/forum/105268-examine-field-definition-problems