2015-09-08 2 views
2

Как указана в документации https://docs.marklogic.com/7.0/guide/java/intro#id_71012Установить длину другой страницы для каждого поискового запроса

менеджеров документов являются поточно один раз изначально настроено; независимо от того, сколько потоков у вас есть, вам нужен только один менеджер документов для каждого типа документа.

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

synchronized (queryManager) { 
    queryManager.setPageLength(messagesOnPage); 
    queryManager.search(queryDefinition, searchHandle, pageNo); 
} 

Вопрос: Можно указать длину страницы другим способом (например, установив его в QueryDefinition)?

Я использую MarkLogic 7.0, клиент-апи-Java 2.0.5

Спасибо, Глеб

ответ

3

документация не пытается предупредить о менеджерах обмена внутреннего состояния между потоками.

Вместо этого он пытается уточнить, что вы можете разделить один объект-менеджер по потокам, если вы решите, пока конфигурация менеджера не изменится.

Если вы используете только объект менеджера запросов в одном потоке, он не виден другим потокам, поэтому вам не нужно синхронизировать изменения с менеджером запросов. Если у вас много потоков с помощью QueryManager, вы должны создать новый QueryManager для каждого потока, так как вы изменяете длину страницы.

Надеюсь, что это поможет,

Смежные вопросы