Alfresco называет это Транзакционный запрос метаданных , где запрос может возвращаться к базе данных, когда Solr не возвращает результатов.
Подробности по настройке этого поведения могут здесь , но в основном queryConsistency
должно быть установлено TRANSACTIONAL_IF_POSSIBLE .
Важно отметить, особенно если вы конвертируете запросы Lucene в CMIS, чтонекоторые параметры запроса (например, +PATH:
) и подстановочные знаки (например, @docs:pageId:homepage
) требуют, чтобы Solr функционировал, и не могут напрямую обращаться к базе данных в случае сбоя Solr.Вы можете проверить, требует ли данный параметр Solr в Alfresco, в Admin Tools / Node Browser.Запустите ваш запрос, выбирая различные типы;type: solr-fts-alfresco
только для Solr;type: db-afts
сначала запросить Solr и вернуться к базе данных, если Solr ничего не возвращает.
И чтобы ответить на второй вопрос, вторая ссылка выше упоминает:
solr.query.cmis.queryConsistency
иsolr.query.fts.queryConsistency
свойства также могут быть установлены для каждого запроса в объектах SearchParameters и QueryOptions.
Так что, похоже, вы можете достичь того, что вы хотите, в вашем Java-коде, но я сам не пробовал.Я считаю, что наиболее желательно, как правило, сначала ударить Solr для повышения производительности, а затем откатиться к базе данных только в случае необходимости.Я не могу придумать хороший пример для встраивания выбора источника данных в вашу бизнес-логику.