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

Set different page length for each search query

如文档中所述https://docs.marklogic.com/7.0/guide/java/intro#id_71012

Document managers are thread safe once initially configured; no matter how many threads you have, you only need one document manager per document type.

我想为每个查询指定不同的页面长度。但我发现这样做的唯一方法是调用 QueryManager 的相应方法。所以我需要自己同步:

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

问题:是否可以用不同的方式指定页面长度(例如在 QueryDefinition 中设置)?

我正在使用 Marklogic 7.0,客户端-api-java 2.0.5

谢谢, Hlib

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

相反,它试图阐明只要管理器的配置不变,您就可以跨线程共享单个管理器对象。

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

希望对您有所帮助,