项目名称
分布式高维空间近邻搜索
项目描述
目前在互联网上高维空间搜索的算法很多,但性能都不尽人意,比如KD树算法,强调互联网,是指本人能在互联网上搜索到的相关算法,如果某个公司内部有自己研究的算法也可能有不错的性能表现。测试KD树的性能,50维度的数据,100万的数据用了600多毫秒,而且搜索结果与线性搜索的结果相差还很大。鉴于此,我自己研究了一个搜索算法,64维度,100万的数据量,搜索前十个最近邻点,大概在200毫秒左右(PS:通过修正bug,算法在此环境中达到了20ms以内搜索速度),而且结果与线性搜索误差不大。
搜索算法特点
1.对于邻近点越近的搜索就越快点
2.对于算法是基于内存的,理论上单机的搜索能力可以达到上亿(内存大小限制)
3.算法是增量的,对于新增的数据可以在一定时间内被搜索到(新增数据这个功能还没有实现,理论上很容易实现的)
4.搜索过程是可以增量搜索的,也就是说如果一个点在业务中之中如果在第一搜索不到合适结果,可以第一次搜索的基础上扩大搜索范围,从而不会消耗过多的性能
项目架构
项目架构图
这个架构有点类似于solr的架构,任何应用程序都可以内嵌一个搜索客户端以提交搜索请求,提交搜索请求需要加载一些元信息,这些信息不会很大,根据元信息进行http分发搜索请求,并根据搜索结果进行合并
合作开发内容
需要开发的分为三大部分:
1.第一部分是底层通讯部分
2.第二部分是算法的完善
3.第三部分是算法与框架的结合
项目开发语言:
JAVA,C++
技能要求
1.至少一年的java开发经验,最好也懂得写页面
2.对netty熟悉
3.了解HA原理
搜索演示:
搜索平台访问地址:http://moxuqiang.6655.la
搜索方式:在文本框内输入50维的记录并点击搜索,一次只能搜一条记录;
得到相应的搜索结果如下:
搜索结果里展现了前十个搜索点与邻近点的距离以及邻近点记录信息,及搜索耗时
由于比较匆忙,对输入没有进行全面的检查,所以请按照教程严格输入搜索记录
搜索数据集下载地址:http://pan.baidu.com/s/1kUj2gar
联系方式
有意合作者可通过以下方式联系
QQ:578038303
微信可通过QQ号搜索