Для этого случая вам нужно написать две новые важные части SOLR-Configuration:
1) Новый SOLR-Cronjob , который запускает индексацию
2) Новый SOLR-IndexerQuery для индексации с вашими особыми требованиями.
Когда вы посмотрите на материал по умолчанию из hybris, вы увидите:
INSERT_UPDATE CronJob;code[unique=true];job(code);singleExecutable;sessionLanguage(isocode);active;
;backofficeSolrIndexerUpdateCronJob;backofficeSolrIndexerUpdateJob;false;en;false;
INSERT Trigger;cronJob(code);active;activationTime;year;month;day;hour;minute;second;relative;weekInterval;daysOfWeek;
;backofficeSolrIndexerUpdateCronJob;true;;-1;-1;-1;-1;-1;05;false;0;;
Эта часть выше предназначена для настройки времени запуска задания. Вы можете изменить его, например, чтобы он бегал каждые 5 секунд.
INSERT_UPDATE SolrIndexerQuery; solrIndexedType(identifier)[unique = true]; identifier[unique = true]; type(code); injectCurrentDate[default = true]; injectCurrentTime[default = true]; injectLastIndexTime[default = true]; query; user(uid)
; $solrIndexedType ; $solrIndexedType-updateQuery ; update ; false ; false ; false ; "SELECT DISTINCT {PK} FROM {Product AS p JOIN VariantProduct AS vp ON {p.PK}={vp.baseProduct} } WHERE {p.modifiedtime} >= ?lastStartTimeWithSuccess OR {vp.modifiedtime} >= ?lastStartTimeWithSuccess" ; admin
Вторая часть здесь более важна. Здесь вы определяете, какие продукты должны быть проиндексированы. Здесь вы можете увидеть, что UPDATE-Job ищет каждый продукт, который был изменен. Здесь вы можете написать новый FlexibleSearch с вашими особыми требованиями.
tl; tr Ответ: Вы должны написать новый исполнитель solrIndexerQuery, который может запускаться каждые 5 секунд