一個簡單的nodejs版本開源全文搜索引擎:seamSearch

jopen 10年前發布 | 44K 次閱讀 搜索引擎 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 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. 再說一下,這個項目的地址是: https://github.com/luyongfugx/seamSearch 覺得不錯的話不妨去給個star :)
本文轉載自:前端亂燉; 原文地址:http://www.html-js.com/article/2435
 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!