为每个搜索查询设置不同的页面长度

时间:2015-09-08 11:19:49

标签: java multithreading marklogic nosql

如文档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,client-api-java 2.0.5

谢谢, HLIB

1 个答案:

答案 0 :(得分:3)

该文档并未试图警告管理员跨线程共享内部状态。

相反,它试图澄清,只要管理员的配置没有改变,你可以选择跨线程共享一个管理器对象。

如果您只在一个线程中使用查询管理器对象,则它对其他线程不可见,因此您无需将更改同步到查询管理器。如果您有许多使用QueryManager的线程,则应该为每个线程创建一个新的QueryManager,因为您正在更改页面长度。

希望有帮助,

相关问题