iBizModel全文检索模型体系详解
全文检索是现代企业信息系统中的核心功能之一,它支持高效、灵活的文本搜索和数据查询。iBizModel作为全面的模型体系,提供了完整的全文检索模型体系,涵盖了从检索体系定义到具体文档、属性和实体映射的全流程。本文将详细介绍iBizModel全文检索模型体系的应用场景、模型管理图例和建模DSL,帮助您深入理解并应用这一强大功能。
一、全文检索模型体系概述
iBizModel全文检索模型体系是一个层次化的模型结构,以PSSYSSEARCHSCHEME(全文检索体系)为根节点,向下延伸出PSSYSSEARCHDOC(全文检索文档)、PSSYSSEARCHFIELD(全文检索属性)、PSSYSSEARCHDE(全文检索实体)和PSSYSSEARCHDEFIELD(全文检索实体属性)等核心模型。这一体系支持多种搜索引擎类型,包括ElasticSearch、Solr和用户自定义引擎,提供了灵活的配置选项和强大的扩展能力。
全文检索体系的核心价值在于将业务数据与搜索能力深度融合,通过标准化的模型定义,实现数据的自动索引、高效检索和智能分析。体系支持文档分片、副本配置、属性数据类型定义、分析器配置等高级功能,能够满足从简单文档搜索到复杂数据分析的各种业务需求。
二、应用场景分析
1. 企业文档管理系统
在企业文档管理场景中,全文检索体系可用于构建智能文档搜索平台。例如,合同文档管理系统可以通过PSSYSSEARCHSCHEME定义合同搜索体系,使用PSSYSSEARCHDOC创建合同文档索引,通过PSSYSSEARCHFIELD定义标题、签署日期、合同金额等搜索属性。用户可以通过关键词快速定位相关合同,支持按日期范围、金额区间等条件进行高级筛选。
具体实现中,合同实体(PSDATAENTITY)通过PSSYSSEARCHDE与检索文档建立映射关系,确保合同数据的实时同步和索引更新。这种架构支持高并发访问,能够处理海量文档数据,同时保证搜索响应速度和结果准确性。
2. 知识库和内容管理系统
对于知识库和内容管理场景,全文检索体系支持文档内容的全文本索引和智能检索。通过PSSYSSEARCHDOC定义知识文档,配置多语言分析器,支持中英文混合内容的准确搜索。文档属性可以包括标题、摘要、正文内容、标签、作者、创建时间等,满足多维度的搜索需求。
在此场景中,PSSYSSEARCHDE的threadrunmode属性可以设置为线程执行模式,确保大量文档的索引更新不会阻塞主业务流程。同时,通过配置适当的shards和replicas参数,实现搜索系统的高可用和水平扩展。
三、模型管理图例
以下是iBizModel全文检索模型体系的层次结构和关系图,使用Mermaid语法表示:
包含 包含 包含 包含 引用 引用 引用 PSSYSSEARCHSCHEME +String codename +String name +String searchenginetype +Integer docshards +Integer docreplicas +String objnamecase +contains→ PSSYSSEARCHDOC +contains→ PSSYSSEARCHDE PSSYSSEARCHDOC +String codename +String name +String logicname +Integer replicas +Integer shards +Integer defaultmode +contains→ PSSYSSEARCHFIELD PSSYSSEARCHFIELD +String codename +String name +String logicname +String fieldtype +Integer indexflag +Integer storeflag +String analyzer +String searchanalyzer +Integer stddatatype PSSYSSEARCHDE +String codename +String name +String psdeid +Integer threadrunmode +contains→ PSSYSSEARCHDEFIELD PSSYSSEARCHDEFIELD +String codename +String name +String psdefid +String pssyssearchfieldid +String defaultvaluetype +String defaultvalue PSDATAENTITY +String codename +String name +String logicname +Integer detype PSDEFIELD +String codename +String name +String logicname +Integer deftype
该图清晰地展示了全文检索模型体系的层次结构:
- PSSYSSEARCHSCHEME作为根模型,管理整个检索体系
- PSSYSSEARCHDOC定义具体的检索文档,包含多个PSSYSSEARCHFIELD
- PSSYSSEARCHDE建立业务实体与检索体系的桥梁,包含PSSYSSEARCHDEFIELD
- PSSYSSEARCHDEFIELD将实体属性映射到检索属性,实现数据同步
四、建模DSL详解
1. PSSYSSEARCHSCHEME(全文检索体系)
PSSYSSEARCHSCHEME是全文检索体系的根模型,定义检索体系的基本配置和引擎类型。
groovy
pssyssearchscheme (
codename: "EnterpriseSearch", // 体系代码标识,在模块内唯一
name: "企业搜索体系", // 体系名称
searchenginetype: "ELASTICSEARCH", // 搜索引擎类型
docshards: 5, // 默认分片数
docreplicas: 1, // 默认副本数
objnamecase: "DEFAULT", // 对象名称转换规则
psmoduleid: "base" // 所属系统模块
){
// 子模型定义...
}
关键属性说明:
searchenginetype
:支持ELASTICSEARCH、SOLR、USER三种类型docshards
和docreplicas
:控制索引的分布和冗余,影响搜索性能和可靠性objnamecase
:数据库对象名称转换,支持DEFAULT、UCASE、LCASE
2. PSSYSSEARCHDOC(全文检索文档)
PSSYSSEARCHDOC定义具体的检索文档,包含文档级别的配置和属性集合。
groovy
pssyssearchdoc (
codename: "ContractDocument",
name: "CONTRACTDOCUMENT",
logicname: "合同文档",
replicas: 2, // 文档副本数
shards: 3, // 文档分片数
defaultmode: 1, // 是否默认文档
pssyssearchschemeid: "base.EnterpriseSearch"
){
pssyssearchfield (
name: "TITLEFIELD",
codename: "TitleField",
logicname: "标题属性",
fieldtype: "TEXT", // 属性数据类型
indexflag: 1, // 是否索引
storeflag: 1, // 是否存储
analyzer: "ik_max_word", // 索引分析器
searchanalyzer: "ik_smart", // 搜索分析器
stddatatype: 25 // 标准数据类型
)
pssyssearchfield (
name: "SIGNDATEFIELD",
codename: "SignDateField",
logicname: "签署日期属性",
fieldtype: "DATE", // 日期类型
indexflag: 1,
storeflag: 0,
dateformat: "yyyy-MM-dd", // 日期格式
stddatatype: 5
)
}
文档配置重点:
replicas
和shards
:可覆盖体系默认配置,实现细粒度控制defaultmode
:标记为默认文档,在无指定文档时使用- 支持多种fieldtype:TEXT、INTEGER、DATE、FLOAT、BOOLEAN等
3. PSSYSSEARCHFIELD(全文检索属性)
PSSYSSEARCHFIELD定义文档的具体搜索属性,控制索引和搜索行为。
groovy
pssyssearchfield (
name: "CONTENTFIELD",
codename: "ContentField",
logicname: "内容属性",
fieldtype: "TEXT",
indexflag: 1,
storeflag: 1,
analyzer: "ik_max_word",
searchanalyzer: "ik_smart",
fielddataflag: 0, // 是否启用属性数据模式
pkey: 0, // 是否主键
stddatatype: 25,
pssyssearchdocid: "base.EnterpriseSearch.CONTRACTDOCUMENT"
)
属性类型详解:
- 文本类型:配置分词器,支持中文智能分词
- 数值类型:支持精确匹配和范围查询
- 日期类型:支持日期格式化和时间范围查询
- 地理位置类型:支持地理空间查询
4. PSSYSSEARCHDE(全文检索实体)
PSSYSSEARCHDE建立业务实体与检索文档的映射关系,实现数据同步。
groovy
pssyssearchde (
codename: "ContractSearchEntity",
name: "合同搜索实体",
psdeid: "base.CONTRACT", // 引用的业务实体
threadrunmode: 1, // 线程运行模式
pssyssearchdocid: "base.EnterpriseSearch.CONTRACTDOCUMENT",
pssyssearchschemeid: "base.EnterpriseSearch"
){
pssyssearchdefield (
name: "TITLE",
codename: "title",
psdefid: "base.CONTRACT.TITLE", // 实体属性引用
pssyssearchfieldid: "base.EnterpriseSearch.CONTRACTDOCUMENT.TITLEFIELD",
defaultvaluetype: "SESSION", // 默认值类型
defaultvalue: "userid" // 默认值参数
)
}
实体映射特性:
threadrunmode
:支持线程执行,避免阻塞主业务psdeid
:引用具体的业务实体,建立数据关联- 支持实时数据同步和批量索引更新
5. PSSYSSEARCHDEFIELD(全文检索实体属性)
PSSYSSEARCHDEFIELD定义实体属性与检索属性的映射规则。
groovy
pssyssearchdefield (
name: "SIGNDATE",
codename: "signdate",
psdefid: "base.CONTRACT.SIGNDATE",
pssyssearchfieldid: "base.EnterpriseSearch.CONTRACTDOCUMENT.SIGNDATEFIELD",
pssyssearchdeid: "base.EnterpriseSearch.ContractSearchEntity",
defaultvaluetype: "CURTIME" // 当前时间作为默认值
)
映射配置要点:
defaultvaluetype
:支持多种默认值类型,包括SESSION、APPLICATION、UNIQUEID等- 支持属性值转换和格式化
- 可配置多个属性映射到同一检索属性
五、完整DSL示例
以下是一个完整的企业合同搜索体系DSL示例:
groovy
pssyssearchscheme (
codename: "ContractSearchScheme",
name: "合同搜索体系",
searchenginetype: "ELASTICSEARCH",
docshards: 5,
docreplicas: 1,
objnamecase: "DEFAULT",
psmoduleid: "base"
){
pssyssearchdoc (
name: "CONTRACTDOCUMENT",
codename: "ContractDocument",
logicname: "合同文档",
replicas: 2,
shards: 3,
defaultmode: 1
){
pssyssearchfield (
name: "TITLEFIELD",
codename: "TitleField",
logicname: "标题属性",
fieldtype: "TEXT",
indexflag: 1,
storeflag: 1,
analyzer: "ik_max_word",
searchanalyzer: "ik_smart",
stddatatype: 25
)
pssyssearchfield (
name: "CONTENTFIELD",
codename: "ContentField",
logicname: "内容属性",
fieldtype: "TEXT",
indexflag: 1,
storeflag: 1,
analyzer: "ik_max_word",
searchanalyzer: "ik_smart",
stddatatype: 25
)
pssyssearchfield (
name: "SIGNDATEFIELD",
codename: "SignDateField",
logicname: "签署日期属性",
fieldtype: "DATE",
indexflag: 1,
storeflag: 0,
dateformat: "yyyy-MM-dd",
stddatatype: 5
)
pssyssearchfield (
name: "AMOUNTFIELD",
codename: "AmountField",
logicname: "金额属性",
fieldtype: "DOUBLE",
indexflag: 1,
storeflag: 1,
stddatatype: 6
)
}
pssyssearchde (
codename: "ContractSearchEntity",
name: "合同搜索实体",
psdeid: "base.CONTRACT",
threadrunmode: 1
){
pssyssearchdefield (
name: "TITLE",
codename: "title",
psdefid: "base.CONTRACT.TITLE",
pssyssearchfieldid: "base.ContractSearchScheme.CONTRACTDOCUMENT.TITLEFIELD",
defaultvaluetype: "SESSION",
defaultvalue: "userid"
)
pssyssearchdefield (
name: "CONTENT",
codename: "content",
psdefid: "base.CONTRACT.CONTENT",
pssyssearchfieldid: "base.ContractSearchScheme.CONTRACTDOCUMENT.CONTENTFIELD"
)
pssyssearchdefield (
name: "SIGNDATE",
codename: "signdate",
psdefid: "base.CONTRACT.SIGNDATE",
pssyssearchfieldid: "base.ContractSearchScheme.CONTRACTDOCUMENT.SIGNDATEFIELD",
defaultvaluetype: "CURTIME"
)
pssyssearchdefield (
name: "AMOUNT",
codename: "amount",
psdefid: "base.CONTRACT.AMOUNT",
pssyssearchfieldid: "base.ContractSearchScheme.CONTRACTDOCUMENT.AMOUNTFIELD"
)
}
}
六、总结
iBizModel全文检索模型体系提供了一个完整、灵活且强大的搜索解决方案,通过层次化的模型设计和丰富的配置选项,能够满足各种复杂的业务搜索需求。从体系定义到具体属性映射,每个环节都经过精心设计,确保搜索功能的高效性、可靠性和可扩展性。
该体系的核心优势在于:
- 标准化建模:通过统一的模型规范,降低系统复杂度
- 灵活配置:支持多种搜索引擎和丰富的配置选项
- 性能优异:通过分片、副本等机制保障大规模数据下的搜索性能
- 易于扩展:模块化设计支持功能扩展和定制化开发
- 生态集成:与iBizModel其他模型体系无缝集成,形成完整的解决方案
在实际应用中,建议根据具体业务需求合理设计检索体系结构,优化配置参数,并建立完善的监控和维护机制,确保搜索系统的稳定运行和持续优化。通过充分利用iBizModel全文检索模型体系的能力,企业可以构建出高效、智能的搜索平台,显著提升业务处理效率和用户体验。