论文部分内容阅读
在普通OA(Office Automation办公自动化)系统中,随着信息量的日益增多和爆炸式扩展,对于数据字段的普通模糊匹配搜索查询已远远不能满足不同的用户需求。由于普通的OA系统搜索查询一般都是根据用户需求硬质编码在具体模块中,与具体模块耦合较强,不易于扩展、维护和管理。同时搜索数据库和搜索索引模块接口不能统一,使得开发人员使用不同接口难度增大。本文在深入分析索引生成、中文分词、索引检索等搜索引擎核心技术的基础上,设计并实现了OA系统个性化搜索引擎包。该搜索引擎包的目标是建立一个独立于具体模块、与数据字段相关性较弱、可管理维护配置的个性化搜索引擎,支持中文分词、全文检索等搜索引擎特征,同时对全文检索和数据库检索建立统一的查询接口和规则,使得在全文检索和数据库检索中容易切换。该搜索引擎包构建于Compass和Lucene之上,将OA系统数据库搜索和索引搜索统一结合在一起,统一了查询接口并将OA系统搜索抽象成可管理和维护的外部独立包,以此减少系统业务模块之间的耦合,减少重复编码,提高系统可重构性;同时实现了全文检索系统的中文分词,优化了中文分词的词库结构。系统通过Spring和Hibernate的支持,提供对数据库查询和索引搜索的容器管理,通过对Hibernate映射的JAVA对象的声明式配置,实现了根据配置来维护索引字段和索引表,并可配置管理分词和查询分析器,可以灵活实现系统的扩展和伸缩。通过Compass和Hibernate结合,对数据库提供事务级索引,同时能和数据库同步更新索引,提高构建索引的速度和索引的可维护性。系统实现了将OA系统各层查询逻辑分离,通过对数据传输对象的设置,在底层系统生成数据库查询语句和索引查询语句,延迟查询语句的生成时间,便于各层之间进行协作。系统可以极大改善OA系统的开发时间和开发效率,进一步降低系统的耦合性,减少系统维护和管理带来的开销,使得开发重心进一步转移到业务逻辑上,同时又能增强普通数据字段模糊匹配带来功能不足的困扰,通过个性化配置,可以使得搜索引擎满足不同用户功能需求,达到简化系统开发和增强系统功能的目的。