We've got a problem in our search-driven document management system, and I'm running out of ideas.
A custom event receiver, on
ItemUpdated() checks to see if the files metadata requires it to be moved to another library (in the same
SPWeb). If so, it creates any required folders, moves it with
SPFile.MoveTo(), then updates another bit of metadata with
SPFile.Item.Update() and followed up with
SPList.Update() (which may or may not be necessary).
Sometimes the event receiver fires immediately after the file is added (by a very complex timer job we would prefer not to re-write), but it is also run when changes are made to metadata by users.
The problem is that the search indexer will not pick up the changes until a full crawl is run. We run continuous crawls and are dependant on having up to date search results. Until now we've been running three extra full crawls each day, but as the volume of files grows this is becoming impractical.
How should we move the files so that an incremental crawl will find the changes?
P.s. This is an on-premise SP2013 farm.