chinese-search 是一个全文检索组件,基层实现依赖 nodejieba 中文分词和 redis 集合存储。比 MySQL 更轻便更敏捷。
## ES5 var search = require('chinese-search'); ## ES6 import search from 'chinese-search' var data = [{ 'name': 'C#权威指南-full', 'title': 'C#权威指南是一本C#进阶学习最好的书籍。', 'author':'ken', 'id': 1 }, { 'name': 'C++权威指南-full', 'title': 'A', 'author':'ken', 'id': 2 }, { 'name': 'PHP权威指南-full', 'title': 'B', 'author':'ken', 'id': 3 }] // 启动Redis服务,然后填入数据。 var s = search.Engine({'host':'127.0.0.1','port':4000}) .cutKeys(['name','title']) // 声明分词的KEY .data(data,(err,r) => { if(err){ // 错误处理 return } // 正常在这里可以使用query() // }) // 查询 s.returnKeys(['name','title','id']) // 声明数据返回包含KEY .query(['A'],(err,r)=>{ // 关键字数组 if (err) { console.log(err); return }; console.log(r); // 结果:[ { name: 'C++权威指南-full', title: 'A', id: 2 } ] }) ### Express使用 app.use(search.Engine({'host':'127.0.0.1','port':4000}).supportExpres('SEARCHENGINE')) // 你可以在这些地方找到引擎对象,然后对它操作 // req.app['SEARCHENGINE'],res.app['SEARCHENGINE'],app['SEARCHENGINE'] app['SEARCHENGINE'].cutKeys(['name','title']) .data(data,(err,r) => { if(err){ // 错误处理 return } // 正常在这里可以使用query() // })