简介
Redisearch 是一个全文搜索引擎,基于 Redis构建。它允许你在 Redis 数据库中使用高效的分词和全文搜索来管理和查询文档。 Redisearch 的网络接口支持类似 Elasticsearch 的查询语言,并提供了类似 Elasticsearch 的功能,例如过滤、聚合和排序。Redisearch 是一个开箱即用的,支持多种编程语言,可以快速与已有数据库整合。
安装
使用 npm 全局安装 Redisearch,打开命令行,输入如下命令:
npm install -g redisearch
连接 Redis
为了连接 Redis 数据库,需要使用 Redis 官方的 Node.js 客户端,首先它也需要使用 npm 安装:
npm install redis --save
使用以下代码连接 Redis:
var redis = require('redis'); var client = redis.createClient(port, host)
注意:其中 port
和 host
分别为 redis 服务的端口和主机名,并且连接会在网络连接失败时抛出错误
创建索引
提交文档到 Redisearch 的工作开始之前,需要创建或更新索引。Redisearch 索引的定义可以通过 Redis 的 key-value 存储格式进行查询和修改,创建索引的代码如下所示:
var redisearch = require('redisearch'); var client = redis.createClient(6379, 'localhost'); var idx = redisearch(redis); idx.addField(redisearch.TextField('title')); // 创建一个名为 'title' 的新字段 idx.add(redisearch.Document('doc1').setFields('title', 'Hello Redisearch')); // 添加一个新文档 idx.search('redisearch', function (err, results) { console.log(results); });
检索文档
使用以下代码检索文档:
idx.search('redisearch', 'Hello Redisearch', function (err, results) { console.log(results); })
该方法会在键值为 “redisearch” 的索引内搜寻包含有关 “Hello Redisearch” 的查询字符串的文档。搜索结果将包括所有匹配的文档及其详细信息。
添加更多字段
可以通过以下代码更新索引并添加更多字段:
idx.addField(redisearch.TextField('body')); // 添加一个名为 'body' 的新字段 idx.add(redisearch.Document('doc2') .setFields('title', 'Hello Redisearch') .setFields('body', 'This is my Redisearch tutorial') );
删除文档
可以将文档从索引中删除:
idx.delete('doc1', function (err) { console.log('Document has been deleted'); });
这将从索引中删除文档 doc1
。
过滤器
过滤器可以在搜索时过滤文档,例如:
idx.search('redisearch', '@title:Redisearch @body:tutorial', function (err, results) { console.log(results); })
该方法将查询所有具有 “Redisearch” 标题和包含 “tutorial” 的正文的文档。
聚合
通过以下代码实现按分类字段聚合文档:
idx.aggregate('redisearch', [ redisearch.Aggregation.redisearch.GroupBy('@category', redisearch.Aggregation.REDUCE_COUNT()) ], function (err, results) { console.log(results); });
高亮度显示
使用以下代码高亮显示搜索结果的关键字:
-- -------------------- ---- ------- --- ------- - - --------- ------ ------------ ----- --------- ----- ------- ---- ---------- - ------- --------- -------- ----- ------------ ------------ - -- ------------------------ ------ ------------ -------- -------- ----- -------- - --------------------- --
该方法将搜索结果高亮显示,使用 “” 和 “” 标记搜索结果的关键字。
结论
如上所述,Redisearch 给我们带来了一个强大的搜索引擎的能力,以及一些 Elasticsearch 的功能。在使用过程中,我们必须先创建索引、添加文档以及添加、删除、修改字段。我们还介绍了如何使用筛选器筛选结果、聚合数据,并在结果中高亮显示查询的文本。这些功能使 Redisearch 成为一种可行的全文搜索解决方案。
示例代码
完整的演示代码:
-- -------------------- ---- ------- --- ---------- - ---------------------- --- ----- - ----------------- --- ------ - ------------------------ ------------- --- --- - ------------------ -------------------------------------------- ------------------------------------------- --- ---- - - ----- -- -------- -------- --- ------- ----- -- --- ----- ------- ----- -- --- ---- - - ----- -- -------- -------- --- ------- ----- -- --- ------ ------- ----- -- --- ---- - - ----- -- -------- -------- --- ------- ----- -- --- ----- ------- ----- -- ----------------------------------------------------------- ----------------------------------------------------------- ----------------------------------------------------------- --- ---------- - ---------- --------------- ----------- -------- ----- -------- - --------------------- --- ------------------------ -------- ----- ---- - ---------------- ----- --
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/74787