nodejs 版本開源全文搜索引擎:addon

jopen 10年前發布 | 18K 次閱讀 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.

 

項目主頁:http://www.baiduhome.net/lib/view/home/1395130309478

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!