基于neo4j,百度地图API实现旅游地区检索图谱
第一步:安装JDK1.8,因为neo4j非关系型数据库是基于Java实现的,所以需要先预装JDK,这里还是选择万年不变的JDK1.8.具体步骤参见链接: link.
第二步:安装数据库neo4j,这里版本要和自己的jdk版本对应。具体步骤参见链接:link.
环境基本搭建完成,这里开发环境选择IDEA,使用Spring Boot导入maven依赖的方式统一管理jar包。
下面我先展示下该项目的功能:
图谱搜索界面:
输入搜索信息后:比如西安市
此时西安市所有景点信息全部检索出来,并且在节点数据中可以查看当前数据的具体信息。如下图:
还有这些数据的关系数据:如下图
再然后可以根据检索出来的景点信息,跳转到地图搜索页面去检索地图信息。如下图,我们点击地图搜索,然后输入大唐芙蓉园搜索。
大致功能目前开发到里,下面贴出项目所使用的相关技术和操作。
先展示目录结构:如下图
目前只对景点信息进行检索,所以每个节点保存一个景点信息或者地区信息,景点信息从属于地区,所以节点结构如下图:
借助百度地图搜索出来的景点地区信息字符串是json字符串格式,然后我们在借助阿里巴巴的fastjson完成检索信息的提取。检索信息格式如下:
在测试代码中尝试抓取数据查看数据结构,代码如下:
然后编写CQL语句操作neo4j数据库进行增删查改和关系连接。代码如下:
在测试代码中查看是否能够正常执行数据库操作代码,代码如下:
基本工具准备完毕。
再次感谢百度地图API,提供地图数据。
项目的数据库中一开始是没有任何数据的,当用户首次访问时会先检索数据库有无信息,如果有会直接查询数据库即可,如果没有该数据,则会先访问百度地图API获取网络数据然后提取相关信息存入neo4j数据库中,在将数据返回前端。所以对于前期数据模型没有搭建起来时,访问速度较慢,但对于后期的数据逐渐完整,响应速度也会相应增加。
总的来说,虽然实用技术不难,但是有些还是没有接触过的,前端代码也是一大难题,还是需要学习一点前端的,比如ajax等,为了界面美观,CSS,写样式也需要学一些。学习CQL语句也花费了不少时间,之前接触的主要是MySQL关系型数据库,第一次使用非关系型数据库neo4j多少有点不适应。前期的环境搭建还是比较容易,但是中间也会有点小插曲,比如某个注解调用不出来,经过排查是neo4j的依赖版本有问题,和spring boot版本不兼容。等等这些问题都会耽误不少时间,从而影响进度。
我是程序员小哲,热爱夹娃娃和Java。