为每个搜索查询设置不同的页面长度
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,因为您正在更改页面长度。
希望对您有所帮助,
如文档中所述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,因为您正在更改页面长度。
希望对您有所帮助,