1. Bucketsize 代表 rsuite.search.bucketSize within rsuite.properties.
com.reallysi.rsuite.system.search.BaseReferencedByFilter.referencedMOs 存放了经过search scope过滤的来自于CA结果集的MO id
maxHits 控制CA过滤容器里的结果集数量,如果该值较小,MO查询出来的当前bucket里的结果不符合CA过滤器里的结果要求,MO会继续往下一个bucket里装数据,并将数据放入CA过滤器里过滤,直到当前页中装满所要求的结果集内容(一页默认装10个结果)。
2. 何时结束 数据库的查询,表示已经获取了足够多的用以返回页面的结果集?
2.1 com.reallysi.rsuite.system.search.ResultItemsCollection.getResult
查询当前页上的某条数据时,如果这条数据已经在RSuite里的filteredItemList 里存在,就不去MarkLogic去查,如果不存在,就往bucket里装数据。Bucket里存放的数据个数取决于bucketsize。Bucketsize 控制了这一次数据查询所产生的结果集个数,bucket里放的数据是未经过过滤器过滤的数据。
SearchResource的rs-start,rs-end控制了一页中的结果集个数。
2.2 当RSuite里的filteredItemList 里的数据已经放入了被查询的当前页上的某条数据时,就结束数据查询动作。
参考: com.reallysi.rsuite.system.search.ResultItemsCollection.fillBucketsUntilFilteredSize (347th line)
3. 翻页之后,间隔的结果集个数超过了bucketsize的值,结果集的总个数会发生变化
查询MO (process-fulltext-search-items)的翻页参数值,会影响结果集的总个数。
Sample is pending
4. 翻页之后,间隔的结果集个数超过了bucketsize的值,会将目标页之前的尚未填满的filteredItemList 填满。
此时,会花费较大的开销。如果当前在第十页,调到第50页,bucketsize是20,“查询”模块会不断填充unfilteredBuckets和filteredItemList。
参考: com.reallysi.rsuite.system.search.ResultItemsCollection.fillBucketsUntilFilteredSize (347th line)
修改后的代码:参考附件modified_code.zip
CA 过滤器的说明和相关代码修改,将陆续补上。
CA 过滤器的代码分析
RSuite获取CA过滤器的CA结果集的汇总摘要信息后,针对每个CA接点,查出他的MO纪录集的个数和ID列表,然后根据MO id列表查询出与每个MO id相关的所有MO的信息,将这些MO放入过滤数据池referencedMOs中。
优化方案:
RSuite获取CA过滤器的CA结果集的汇总摘要信息后,针对每个CA接点,查出他的MO纪录集的个数和ID列表,不去查每个MO的详细信息。而是将MO 查询出来的结果集里的MO传入checkMOExsitsCA里,进行检查。
Solution:
1. maxHits and bucketsize
2. tune RSuite Search code
3. tune RSuite Xquery script
备注:
com.reallysi.rsuite.system.repository.XccRunner.executeToStringArray, transform node to string
com.reallysi.RSuiteStartup
Bugs
When there is exception thrown, it causes Search broken and information about running search showingSearch progress-bar
com.reallysi.rsuite.system.search.ReferencedByContentAssemblyFilter.getReferencedMOorDescendentsForSearchObjectCriteria
for context.getManagedObjectKernel().getManagedElementTreesByIds, when ids is empty, it rised up that index is out for buf.replace(buf.lastIndexOf(","), buf.length(), "");
rsuite.repository.marklogic.forcexquery09dialect
if it is not specified, RSuite sets XQueryDialect to MARKLOGIC_XQUERY_0_9. It is paid attention that “default xquery version” within XDBC Server on MarkLogic Server need to set value corresponding to XQueryDialect within RSuite.
分享到:
相关推荐
总之,Python 3.5.4是一个功能丰富、性能优化的版本,它的源代码对于开发者来说是一份宝贵的资源,无论是用于学习、研究还是开发特定应用。结合VS2010,开发者可以获得一个强大且灵活的开发环境,以满足各种项目需求...
开发者可以使用插件扩展Maven的功能,例如,`maven-jar-plugin`用于打包JAR文件,`maven-war-plugin`用于打包WAR文件,`maven-compiler-plugin`负责编译源代码。 - **聚合与继承**:Maven支持项目聚合和继承,通过`...
5.7 实现HCI 的部分源代码及其分析.......... PAGEREF _TOC120615691 \H 27 5.7.1 HCI 对上行数据流的处理过程......... PAGEREF _Toc120615692 \h 27 5 5.7.2 HCI 对下行数据流的处理过程......... PAGEREF _Toc...
当运行 Maven 命令时,它会解析 POM 文件,并根据其中的配置执行相应的构建步骤,如编译源代码、运行测试、打包应用、部署等。Maven 使用中央仓库来存储和检索依赖,如果本地没有某个依赖,Maven 将自动从中央仓库...
** Maven 3.5.4 打包工具详解 ** Maven 是一个强大的项目管理和构建工具,主要用于Java项目。它通过使用一种标准的项目对象模型(Project Object Model, POM),自动化构建过程,管理依赖关系,并执行各种生命周期...
2. "apache-maven-3.5.4-src.zip":这个文件包含了Maven 3.5.4的源代码,开发者可以查看源码,理解其工作原理,或者对Maven进行定制和扩展。 Maven的核心概念包括: - 项目对象模型(POM):Maven的配置文件,包含...
Powerbuilder 9.0实用教程》源代码 1.本源代码包括以下章节源代码: 第01章 认识PowerBuilder 9.0、第05章 创建应用程序、第06章 创建窗体、第07章 创建菜单和工具栏、第10章 应用程序的调试和发布、第11章 ...
- **插件(Plugins)**:Maven 使用插件执行特定的任务,如编译源代码、生成文档、打包JAR等。每个插件都有一个或多个目标(goal),这些目标可以被绑定到生命周期的某个阶段。 **2. Maven 3.5.4 的特性与改进:** ...
**正文** Maven是Java开发领域中不可或缺的项目管理和构建工具,它通过自动化构建过程,帮助开发者管理依赖、编译...确保正确安装JDK 7或更高版本后,你可以充分利用Maven 3.5.4的功能来提高项目管理的效率和质量。
例如,`maven-compiler-plugin`用于编译Java源代码,`maven-surefire-plugin`负责执行单元测试。 4. **Repository管理**:Maven使用远程仓库(如Maven Central Repository)和本地仓库来存储依赖。Maven 3.5.4优化...
源码包包含了MyBatis框架的所有Java源代码,这对于开发者来说是极其宝贵的资源。通过阅读源码,我们可以了解MyBatis的内部工作原理,比如动态SQL的生成机制、SqlSession的管理、Mapper接口的实现方式等。此外,对于...
这个“Zookeeper-release-3.5.4”压缩包包含了Zookeeper 3.5.4版本的源代码,对于Java开发者,尤其是对分布式系统感兴趣的工程师来说,这是一个宝贵的资源。它不仅可以帮助我们理解Zookeeper的内部工作原理,还可以...
3. **插件系统**:Maven通过插件扩展其功能,如编译源代码、运行测试、打包项目等,这些插件可以自定义以满足特定需求。 4. **项目对象模型(Project Object Model,POM)**:POM是Maven的核心,包含了项目的基本...
《Clove 3.5.4安装包:一款强大的启动管理工具详解》 在IT行业中,工具的选择往往能直接影响到工作效率和项目成果。Clove 3.5.4安装包,作为一个重要的工具软件,它的存在是为了帮助用户更高效地管理和控制计算机的...
- **插件**:Maven通过插件扩展其功能,例如,maven-compiler-plugin用于编译Java源代码,maven-surefire-plugin用于运行单元测试。 - **聚合与继承**:一个父POM可以定义多个子项目的通用配置,简化大型项目的管理...
6. **标准化项目结构**:Maven规定了一套标准的项目目录结构,如src/main/java用于放置源代码,src/test/java存放测试代码,src/main/resources存储资源配置等。这样便于团队协作和代码维护。 7. **多模块项目支持*...
这个版本的Processing提供了趣味性的编程体验,鼓励用户通过代码创造动态的图形和交互式作品。 Processing的核心特点在于其简洁的语法,它基于Java语言,但简化了许多细节,使得程序员可以更专注于创意而非底层...