Другой результат Alfresco CMIS с тем же запросом

у нас небольшая проблема. Мы создали приложение GWT поверх наших двух инстансов Alfresco. Приложение должно работать так:

  • Пользователь ищет документ
  • Наше веб-приложение отправляет два одинаковых запроса к двум репозиториям, ждет обоих результатов и предоставляет объединенный набор результатов.

Это верно в случае поиска определенного документа (например, числового идентификатора) или 10, 20, 50 документов (мы не знаем, когда это начинает действовать странно).

Если запрос является последовательным (как и все документы за последний месяц, их должно быть около 30-60 тыс./месяц), очевидно, предел запроса cmis (500) останавливается раньше. НО, если пользователь нажимает «поиск» в первый раз, через некоторое время набор результатов состоит из 2 документов. И если сразу после этого пользователи снова нажимают «поиск» с тем же запросом, набор результатов открывается почти сразу, и в нем содержится 500 документов.

Что, черт возьми, не так? Кэширует ли CMIS каким-то образом? Как работают большие запросы CMIS? Спасибо.


person Teqnology    schedule 17.07.2013    source источник
comment
Вы пытались добавить предложение orderBy?   -  person alfrescian    schedule 17.07.2013
comment
да, даже в этом случае это происходит в любом случае.   -  person Teqnology    schedule 17.07.2013
comment
Используете ли вы Apache Chemistry в своем приложении GWT? Какая версия Alfresco?   -  person alfrescian    schedule 18.07.2013
comment
Да, мы используем Apache Chemistry и Alfresco 3.4.7 Enterprise. Мы не можем выполнить обновление, потому что у нас нет лицензии Alfresco 4.   -  person Teqnology    schedule 18.07.2013


Ответы (3)


Как вы упомянули, вы используете Apache Chemistry. В Chemistry есть механизм кэширования на стороне клиента: http://chemistry.apache.org/java/how-to/how-to-tune-perfomance.html

person alfrescian    schedule 18.07.2013

Я подозреваю, что это вообще не связано с CMIS, а связано с проблемой проверки максимального разрешения Alfresco Lucene. На высоком уровне существует параметр конфигурации для максимального количества проверок разрешений, которые Alfresco будет выполнять в отношении набора результатов поиска. Существует также ограничение на общее количество времени, затрачиваемого на выполнение таких проверок. Эти ограничения настраиваются в файле свойств репозитория следующим образом:

# The maximum time spent pruning results

system.acl.maxPermissionCheckTimeMillis=10000

# The maximum number of results to perform permission checks against

system.acl.maxPermissionChecks=1000 

При первом запуске поиска сервер начинает выполнять эти проверки и достигает предела. Затем он возвращает результаты поиска, которые он смог отфильтровать. Теперь кеш разрешений заполняется, поэтому при следующем запуске поиска результаты возвращаются намного быстрее, а набор результатов больше.

Поиски в Alfresco не являются детерминированными — вы не можете гарантировать, что для больших наборов результатов каждый раз будет возвращаться один и тот же набор результатов, независимо от того, насколько велики ваши настройки.

Если вы сможете выполнить обновление в какой-то момент, вы можете обнаружить, что настройка Alfresco для использования Solr, а не Lucene, может помочь облегчить это, но я не уверен на 100%, что это произойдет.

person Jeff Potts    schedule 02.08.2013
comment
Спасибо, Джефф, но, насколько я знаю, наш клиент застрял на 3.4.5 Alfresco Enterprise, и мы не можем и не будем, я думаю, обновляться до Alfresco 4. Вот почему, если это проблема Lucene, мы следует искать обходной путь здесь с чем-то еще. Изменение этих параметров помогает, например, увеличить затрачиваемое время или что-то еще? - person Teqnology; 26.08.2013
comment
Извините, я подумал, есть ли способ отключить Lucene maxPermissionCheck? Или возможность отключить проверку безопасности для запросов в Alfresco? Мы используем другое приложение для обеспечения безопасности поверх Alfresco, и нам действительно не нужно, чтобы Alfresco делала это дважды. - person Teqnology; 27.08.2013

Чтобы отключить проверки безопасности, замените общедоступный SearchService на searchService. В общедоступных службах усилена безопасность, поэтому с помощью searchService вы можете избежать проверки безопасности.

person nteo    schedule 27.11.2013