一個簡單的nodejs版本開源全文搜索引擎:seamSearch
這篇文章寫得很真實。作者講了自己的心路歷程:在他的 startup 失敗后,那些原來不愿掏錢的客戶、甚至是競爭對手紛紛要求他開源產品;一開始他當然很不爽,當然不愿意開源;后來理性地思考后,還是決定開源了。
這幾年nodejs越來越火爆,js程序員們終于可以不局限于瀏覽器那一畝三分地了,很多以前由java,c等實現的東西紛紛有了nodejs版本,我也隨波逐流一把,寫了一個nodejs的搜索引擎addon,現在已經放GitHub: https://github.com/luyongfugx/seamSearch
這個開源addon其實是對我幾年前寫的c++ 版的luyfsearch(GitHub:https://github.com/luyongfugx/luyfsearch)進行的一個nodejs封裝。下面我們來看看怎么使用:
1.首先當然是安裝,這個很簡單:
npm install seamsearch2.建立索引 新建testindex.js文件,內容如下:
var seamSearch= require('seamsearch'); //需要索引的數據,用一個數組表示。每個數組項又是一個數組,表示一個document(lucene里面的document同理),這里的每 個數組項表示一個字段,分別由name,type,value三個屬性組成,分別表示字段名稱,字段類型(long,str兩種),字段內容。以下說明建立2個document的索引。 var indexData=[[{'name':'t','type':'long','value':'1'},{'name':'tx','type':'str','value':'hello seam'}], [{'name':'t','type':'long','value':'14'},{'name':'tx','type':'str','value':'hello wayne'}], [{'name':'t','type':'long','value':'13'},{'name':'tx','type':'str','value':'hello freda'}]]; 用seamSearch.index方法來建立索引,第一個參數是索引文件路徑,第二個參數是字典路徑,字典文字由一個文本 文 件組成,每行是一個詞,第三個參數是要索引數據 var status= seamSearch.index('/Users/waynelu/nginxhtmls/luyfsearch/index/','/Users/waynelu/nginxhtmls/seamSearch/seamSearch/words.dict',indexData); console.log(status);運行node testindex.js 運行結果如下:
create index! { status: 'succ' }
說明索引建立成功,這時候到索引文件目錄下看,能看到.fdt .del等文件,這些都是索引文件
3.搜索
新建testsearch.js文件, 內容如下:
var seamSearch = require('seamsearch'); var ts=[['t','long'],['tx','str']];索引document結構,和建立索引時候的索引結構對應。 用seamSearch.search方法進行搜索,第一個參數是索引文件路徑,第二個參數是字典路徑,字典文字由一個文本文件組成,每行是一個詞.第三 個參數是要搜索的詞,我們這里搜索'hello',第四個參數是要讀取的字段和類型。
var searchresult=seamSearch.search( '/Users/waynelu/nginxhtmls/luyfsearch/index/', '/Users/waynelu/nginxhtmls/seamSearch/seamSearch/words.dict', 'hello' ,ts); console.log(searchresult);運行node testsearch.js,結果如下
{ hits: 3,datas: [ { id: 0, t: 1, tx: 'hello seam' }, { id: 1, t: 14, tx: 'hello wayne' }, { id: 2, t: 13, tx: 'hello freda' } ] }搜索成功,返回一個json數據,hits說明搜索命中3個document,datas是搜索到的3個document. 到這里一切ok. 再說一下,這個項目的地址是: https://github.com/luyongfugx/seamSearch 覺得不錯的話不妨去給個star :)
本文轉載自:前端亂燉; 原文地址:http://www.html-js.com/article/2435
本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!