nodejs 版本開源全文搜索引擎:addon
這幾年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 seamsearch
2.建立索引
新建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.
本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!