分布式高维空间近邻搜索项目开发

项目名称

分布式高维空间近邻搜索

项目描写叙述

眼下在互联网上高维空间搜索的算法非常多,但性能都不尽人意。比方KD树算法,强调互联网,是指本人能在互联网上搜索到的相关算法,假设某个公司内部有自己研究的算法也可能有不错的性能表现。

測试KD树的性能,50维度的数据,100万的数据用了600多毫秒,并且搜索结果与线性搜索的结果相差还非常大。鉴于此,我自己研究了一个搜索算法。64维度,100万的数据量,搜索前十个近期邻点,大概在200毫秒左右(PS:通过修正bug,算法在此环境中达到了20ms以内搜索速度),并且结果与线性搜索误差不大。

搜索算法特点

1.对于邻近点越近的搜索就越快点
2.对于算法是基于内存的。理论上单机的搜索能力能够达到上亿(内存限制大小)
3.算法是增量的,对于新增的数据能够在一定时间内被搜索到(新增数据这个功能还没有实现,理论上非常easy实现的)
4.搜索过程是能够增量搜索的,也就是说假设一个点在业务中之中假设在第一搜索不到合适结果,能够第一次搜索的基础上扩大搜索范围,从而不会消耗过多的性能

项目架构

项目架构图

这里写图片描写叙述

这个架构有点相似于solr的架构,不论什么应用程序都能够内嵌一个搜索client以提交搜索请求,提交搜索请求须要载入一些元信息。这些信息不会非常大,依据元信息进行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号搜索

原文地址:https://www.cnblogs.com/blfbuaa/p/7029093.html