分佈式高維空間近鄰搜索項目開發

項目名稱

分佈式高維空間近鄰搜索

項目描寫敘述

眼下在互聯網上高維空間搜索的算法很是多,但性能都不盡人意。比方KD樹算法,強調互聯網,是指本人能在互聯網上搜索到的相關算法,假設某個公司內部有本身研究的算法也可能有不錯的性能表現。

測試KD樹的性能,50維度的數據,100萬的數據用了600多毫秒,而且搜索結果與線性搜索的結果相差還很是大。鑑於此,我本身研究了一個搜索算法。64維度,100萬的數據量,搜索前十個近期鄰點,大概在200毫秒左右(PS:經過修正bug,算法在此環境中達到了20ms之內搜索速度),而且結果與線性搜索偏差不大。java

搜索算法特色

1.對於鄰近點越近的搜索就越快點
2.對於算法是基於內存的。理論上單機的搜索能力可以達到上億(內存限制大小)
3.算法是增量的,對於新增的數據可以在必定時間內被搜索到(新增數據這個功能尚未實現,理論上很是easy實現的)
4.搜索過程是可以增量搜索的,也就是說假設一個點在業務中之中假設在第一搜索不到合適結果,可以第一次搜索的基礎上擴大搜索範圍,從而不會消耗過多的性能算法

項目架構

項目架構圖

這裏寫圖片描寫敘述

這個架構有點類似於solr的架構,不論什麼應用程序都可以內嵌一個搜索client以提交搜索請求,提交搜索請求需要載入一些元信息。這些信息不會很是大,依據元信息進行http分發搜索請求,並依據搜索結果進行合併微信

合做開發內容markdown

需要開發的分爲三大部分:
1.第一部分是底層通信部分
2.第二部分是算法的無缺
3.第三部分是算法與框架的結合架構

項目開發語言:框架

JAVA,C++分佈式

技能要求post

1.至少一年的java開發經驗,最好也懂得寫頁面
2.對netty熟悉
3.瞭解HA原理性能

搜索演示:netty

搜索平臺訪問地址:http://moxuqiang.6655.la
搜索方式:在文本框內輸入50維的記錄並點擊搜索。一次僅僅能搜一條記錄;
獲得對應的搜索結果例如如下:
這裏寫圖片描寫敘述

搜索結果裏展示了前十個搜索點與鄰近點的距離以及鄰近點記錄信息,及搜索耗時
由於比較匆忙,對輸入沒有進行全面的檢查,因此請依照教程嚴格輸入搜索記錄
搜索數據集下載地址:http://pan.baidu.com/s/1kUj2gar

聯繫方式

有意合做者可經過下面方式聯繫 QQ:578038303 微信可經過QQ號搜索

相關文章
相關標籤/搜索