Докато оставите индексирането/преиндексирането да се изпълнява отделно от вашето приложение, ще имате проблеми със синхронизирането. В зависимост от сферата ви на работа, това може да не е проблем, но за много приложения с едновременни потребители е така.
Имахме същите проблеми, когато имахме система за работа, изпълняваща асинхронно индексиране на всеки няколко минути. Потребителите биха намерили продукт, използвайки търсачката, след което дори когато администраторско лице е премахнало продукта от валидния продуктов стек, пак го намираше във интерфейса, докато не се изпълни следващото задание за преиндексиране. Това води до много объркващи и рядко възпроизводими грешки, докладвани на първо ниво на поддръжка.
Видяхме две възможности:или да свържете здраво бизнес логиката с актуализациите на индекса за търсене, или да приложите по-строга задача за асинхронно актуализиране. Направихме второто.
На заден план има клас, работещ в специална нишка в приложението tomcat, който приема актуализации и ги изпълнява паралелно. Времето за изчакване за актуализации на бекофис към интерфейса е до 0,5-2 секунди, което значително намалява проблемите за поддръжка от първо ниво. И тъй като е възможно най-слабо свързано, бихме могли дори да внедрим различен механизъм за индексиране.