Copied to clipboard

Flag this post as spam?

This post will be reported to the moderators as potential spam to be looked at


  • Jon Whitter 2 posts 71 karma points MVP
    Mar 31, 2020 @ 16:26
    Jon Whitter
    0

    Document staying in index after validation returned ValueSetValidationResult.Failed

    Hi, I'm currently attempting to setup some document validation on indexing and running into an issue.

    Previously in Umbraco 7 I have setup custom indexers and overwritten ValidateDocument function to add in extra checks to not have a document index. These checks have all been based on some data within the document being index, such as a simple flag that the CMS admin can use to not have the document searchable and more advanced ones that prevent a document from being index based on some child node values.

    I am currently trying to recreate the same process in Umbraco 8. I've created a custom IValueSetValidator and it is working as expect, the only thing that is not working is that on returning ValueSetValidationResult.Failed the document is not removed from the index.

    In Umbraco 7 and Examine when a document failed validation it was removed:

    case IndexOperationType.Add:
      if (ValidateDocument(item.Item.DataToIndex))
      {
         var added = ProcessIndexQueueItem(item, writer);
         indexedNodes.Add(added);
      }
      else
      {
         ProcessDeleteQueueItem(item, writer, false);
    
         OnIgnoringNode(new IndexingNodeDataEventArgs(item.Item.DataToIndex, int.Parse(item.Item.Id), null, item.Item.IndexType));
      }
    break;
    

    Where as in Umbraco 8 the validation check is only performing actions on documents that have not failed:

    PerformIndexItems(values.Where(x => ValidateItem(x) != ValueSetValidationResult.Failed), OnIndexOperationComplete);
    

    Is there an alternative way to dynamically not have documents indexed and subsequently removed?

    My only other thought on how to accomplish this is to dynamically add a field to the index that flags whether the document should be returned in a set of results and filter on it during search. Seems a little excessive based on have it was previously done in 7.

    Cheers

  • This forum is in read-only mode while we transition to the new forum.

    You can continue this topic on the new forum by tapping the "Continue discussion" link below.

Please Sign in or register to post replies