资讯专栏INFORMATION COLUMN

搜索系统的设计与实现

snifes / 310人阅读

摘要:服务系统不是必须的,这里独立是为了分担业务系统处理请求的压力搜索系统访问服务器需要有,类似的服务系统访问搜索系统要带上当前时间的签名,签名的密钥由搜索系统给出。

目标:
- 业务与当前业务系统分离
- 支持多实例部署(分布式)
- 与业务系统切合简单
- 开发人员配置简单,改动代码较少
- 支持搜索统计
- 索引管理

架构图:

流程说明:
采用lucene进行全文搜索要进行两个步骤,一个是建索引,二是搜索索引。

1. 建索引

  

1.1 确定索引的实体(model)种类,在每个实体上加上@IndexEntity的注解,标记该类被索引
1.2 按需对实体要索引的字段进行“索引域配置”,如是否分词、域的数据类型、域在索引中的名称,采用@IndexField注解配置
1.3 收集数据;对每个注解了@IndexEntity的实体进行反射,获取“索引域”的信息,保存到一个集合中,搜索系统定时通过websevice去“API服务系统”获取要索引的数据(JSON格式)
1.4 建索引;搜索系统获取到索引的数据后,解析JSON, 采用Lucene进行建索引, 索引完成后把索引成功的实体列表以JSON形式返回”API服务系统“。
1.5 API服务系统把索引成功的实体标记为“已经索引”,索引工作完成. 搜索

2. 搜索

  

2.1 业务系统提供搜索类型、域、域是否分词、页数等参数通过HTTP的形式请求搜索系统查询结果
2.2 搜索系统根据请求参数解析并进行Lucene的搜索
2.3 搜索系统根据搜索的结果把实体的ID和类型封装在集合中,以JSON形式返回给业务系统
2.4 业务系统根据搜索结果把数据展示出来。

BTW:
- API服务系统不是必须的,这里独立是为了分担业务系统处理请求的压力
- 搜索系统访问API服务器需要有AppKey, 类似api 的 secretKey
- API服务系统访问搜索系统要带上当前时间的签名,签名的密钥由搜索系统给出。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/64017.html

相关文章

  • Java 类文章 - 收藏集 - 掘金

    摘要:而调用后端服务就应用了的高级特分布式配置管理平台后端掘金轻量的分布式配置管理平台。关于网络深度解读后端掘金什么是网络呢总的来说,网络中的容器们可以相互通信,网络外的又访问不了这些容器。 在 Java 路上,我看过的一些书、源码和框架(持续更新) - 后端 - 掘金简书 占小狼转载请注明原创出处,谢谢!如果读完觉得有收获的话,欢迎点赞加关注 物有本末,事有终始,知所先后,则近道矣 ......

    RayKr 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<