`
7wolfs
  • 浏览: 182212 次
  • 性别: Icon_minigender_1
  • 来自: 济南
社区版块
存档分类
最新评论

RSuite 3.5.4 的查询功能源代码分析及修改

    博客分类:
  • XML
 
阅读更多
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.

0
3
分享到:
评论

相关推荐

    python3.5.4源代码

    总之,Python 3.5.4是一个功能丰富、性能优化的版本,它的源代码对于开发者来说是一份宝贵的资源,无论是用于学习、研究还是开发特定应用。结合VS2010,开发者可以获得一个强大且灵活的开发环境,以满足各种项目需求...

    Maven3.5.4本地安装包

    开发者可以使用插件扩展Maven的功能,例如,`maven-jar-plugin`用于打包JAR文件,`maven-war-plugin`用于打包WAR文件,`maven-compiler-plugin`负责编译源代码。 - **聚合与继承**:Maven支持项目聚合和继承,通过`...

    蓝牙协议及其源代码分析.rar

    5.7 实现HCI 的部分源代码及其分析.......... PAGEREF _TOC120615691 \H 27 5.7.1 HCI 对上行数据流的处理过程......... PAGEREF _Toc120615692 \h 27 5 5.7.2 HCI 对下行数据流的处理过程......... PAGEREF _Toc...

    官方下载maven-3.5.4

    当运行 Maven 命令时,它会解析 POM 文件,并根据其中的配置执行相应的构建步骤,如编译源代码、运行测试、打包应用、部署等。Maven 使用中央仓库来存储和检索依赖,如果本地没有某个依赖,Maven 将自动从中央仓库...

    maven3.5.4打包文件

    ** Maven 3.5.4 打包工具详解 ** Maven 是一个强大的项目管理和构建工具,主要用于Java项目。它通过使用一种标准的项目对象模型(Project Object Model, POM),自动化构建过程,管理依赖关系,并执行各种生命周期...

    maven.rar apache-maven-3.5.4

    2. "apache-maven-3.5.4-src.zip":这个文件包含了Maven 3.5.4的源代码,开发者可以查看源码,理解其工作原理,或者对Maven进行定制和扩展。 Maven的核心概念包括: - 项目对象模型(POM):Maven的配置文件,包含...

    Powerbuilder9.0实用教程源代码

    Powerbuilder 9.0实用教程》源代码 1.本源代码包括以下章节源代码: 第01章 认识PowerBuilder 9.0、第05章 创建应用程序、第06章 创建窗体、第07章 创建菜单和工具栏、第10章 应用程序的调试和发布、第11章 ...

    apache-maven3.5.4

    - **插件(Plugins)**:Maven 使用插件执行特定的任务,如编译源代码、生成文档、打包JAR等。每个插件都有一个或多个目标(goal),这些目标可以被绑定到生命周期的某个阶段。 **2. Maven 3.5.4 的特性与改进:** ...

    MAVEN-3.5.4,需要jdk7及以上版本

    **正文** Maven是Java开发领域中不可或缺的项目管理和构建工具,它通过自动化构建过程,帮助开发者管理依赖、编译...确保正确安装JDK 7或更高版本后,你可以充分利用Maven 3.5.4的功能来提高项目管理的效率和质量。

    maven_3.5.4 版本

    例如,`maven-compiler-plugin`用于编译Java源代码,`maven-surefire-plugin`负责执行单元测试。 4. **Repository管理**:Maven使用远程仓库(如Maven Central Repository)和本地仓库来存储依赖。Maven 3.5.4优化...

    mybatis-3.5.4.rar

    源码包包含了MyBatis框架的所有Java源代码,这对于开发者来说是极其宝贵的资源。通过阅读源码,我们可以了解MyBatis的内部工作原理,比如动态SQL的生成机制、SqlSession的管理、Mapper接口的实现方式等。此外,对于...

    Zookeeper-release-3.5.4 源码,部分有注释

    这个“Zookeeper-release-3.5.4”压缩包包含了Zookeeper 3.5.4版本的源代码,对于Java开发者,尤其是对分布式系统感兴趣的工程师来说,这是一个宝贵的资源。它不仅可以帮助我们理解Zookeeper的内部工作原理,还可以...

    apache-maven-3.5.4

    3. **插件系统**:Maven通过插件扩展其功能,如编译源代码、运行测试、打包项目等,这些插件可以自定义以满足特定需求。 4. **项目对象模型(Project Object Model,POM)**:POM是Maven的核心,包含了项目的基本...

    Clove3.5.4安装包.zip

    《Clove 3.5.4安装包:一款强大的启动管理工具详解》 在IT行业中,工具的选择往往能直接影响到工作效率和项目成果。Clove 3.5.4安装包,作为一个重要的工具软件,它的存在是为了帮助用户更高效地管理和控制计算机的...

    apache-maven-3.5.4.zip

    - **插件**:Maven通过插件扩展其功能,例如,maven-compiler-plugin用于编译Java源代码,maven-surefire-plugin用于运行单元测试。 - **聚合与继承**:一个父POM可以定义多个子项目的通用配置,简化大型项目的管理...

    apache-maven-3.5.4-bin.zip

    6. **标准化项目结构**:Maven规定了一套标准的项目目录结构,如src/main/java用于放置源代码,src/test/java存放测试代码,src/main/resources存储资源配置等。这样便于团队协作和代码维护。 7. **多模块项目支持*...

    processing-3.5.4.zip趣味编程

    这个版本的Processing提供了趣味性的编程体验,鼓励用户通过代码创造动态的图形和交互式作品。 Processing的核心特点在于其简洁的语法,它基于Java语言,但简化了许多细节,使得程序员可以更专注于创意而非底层...

Global site tag (gtag.js) - Google Analytics