检索模块的设计

本文探讨了在导航系统中如何设计一个灵活的检索模块,以应对不断变化的需求。通过将查询过程分为用户输入参数、引擎查询和结果集管理三个小模块,分别命名为iParam、iEngine和iResultSet。此外,介绍了iParam的继承结构,如CountryParam、StateParam和CityParam,以及iEngine的继承策略,确保每个子类执行单一明确的查询任务。最后,阐述了iResultSet和iQuery的概念,iQuery用于组合多个查询条件,形成andQuery和orQuery等复合查询方式。
摘要由CSDN通过智能技术生成

         在导航系统中,检索主要应用于poi的检索和address的检索,并且对检索的需求定义也是变化多段,不同的区域需求也是不尽相同。如何设计一个好的检索的模块,使之能够应用于各种变化的需求也是非常重要。

          检索的需求是变化最多的,即使谈好的需求,到最后都会稍微的改变行为,有时改完了又要改回来,最后是2个不同的行为都需要,外面可以通过参数来选择。所以灵活的检索设计是非常有必要的。

       一个查询过程,可以分成,

      1,用户输入参数,明确一个查询需求

      2,engine进行查询

      3,把查询后的结果放入一个结果集合里面,供用户读取结果。

      这3个过程可以对应成3个小模块,分别为: iParam, iEngine,iResultSet。

      从最顶层来看,这3个小模块就能组合成一个完整的 iQuery,即一个完整的查询过程。


iParam:描述了用户的输入,包括查找范围和过滤条件。比如用户想 “在上海市查找以‘横’开头的道路”, 那么 查找范围就是“上海市” 和 过滤条件就是“‘横’开头”。其中查找范围可以理解成一个行政区域。我们可以按不同的行政级别来继承出不同的iParam。 比如: CountryParam表示查找范围一个国家, StateParam表示查找范围为一个省,CityParam表示查找范围为一个市。过滤条件对不同的行政来说应该是一致,过滤条件也可以分成 前缀过滤,关键字过滤,首字母过滤。


iEngine: 执行具体的查找工作。一个eng

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值