Переключение между Solr и DB для выполнения запросов на свежем воздухе - PullRequest
0 голосов
/ 23 октября 2018

Использование Alfresco Community - версия 5.0.0.

Опробованные ниже свойства в файле alfresco-global.properties:

queryConsistency = EVENTUAL тогда все запросы будут отправлены наSolr. queryConsistency = TRANSACTIONAL тогда все запросы отправляются в БД.И Режим по умолчанию сначала выполняет все запросы из БД, а затем Solr в случае сбоя из БД.

Q1: есть ли режим, в котором я могу сначала запросить Solr, и если естьнет результатов от Solr, а затем запросить DB в одной транзакции?

Q2: Можем ли мы выполнить некоторые запросы из Solr, а некоторые из DB со стороны JAVA?

1 Ответ

0 голосов
/ 24 октября 2018

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 для повышения производительности, а затем откатиться к базе данных только в случае необходимости.Я не могу придумать хороший пример для встраивания выбора источника данных в вашу бизнес-логику.

...