背景
主要讲重点,不说废话。
重点是讲RedisSearch的中文分词。以及为什么该中文分词作者写了两个不同语言版本的中文分词项目,区别和联系是什么,应用场景又是什么。
至于具体怎么使用,其实很简单,就是调用一下redis客户端的创建索引和搜索索引的API。无论是Jedis还是 lettuce都提供了访问RedisSearch的API。
用的是哪个开源项目?
RediSearch的中文分词用的就是这个
中国人写的
软件介绍
Friso 是使用 c 语言开发的一款开源的高性能中文分词器,使用流行的mmseg算法实现。完全基于模块化设计和实现,可以很方便的植入其他程序中, 例如:MySQL,PHP,并且提供了php5, php7, ocaml, lua的插件实现。源码无需修改就能在各种平台下编译使用,加载完 20 万的词条,内存占用稳定为 14.5M.
关键字数量
20万
存储在哪里?
文件
内存
15M
java版本
java版本的中文分词,功能和c语言版本完全一样。而且还是同一个作者写的。
那为什么还要搞两个不一样的项目?其实就是语言不一样。具体的应用场景的话,c语言版本可以用在RediSearch里面。
而java版本的应用场景是:用户输入关键字,java后台代码使用它对用户输入关键字进行分词,然后再调用redis服务器。当然,客户端也可以不需要做专门的中文分词,或者只简单的使用空格分词也行,但搜索结果可能就没有那么准确——因为你分词不准确,肯定搜索结果也不准确。
本质区别是,一个是对文章内容进行分词然后创建倒排索引(由RediSearch+Friso完成),一个是对用户输入关键字进行分词然后使得搜索更准确(由java代码+jcseg完成)。
流程图
核心步骤都是:
1、创建索引
2、写数据
3、读数据
区别在于,用户搜索的时候,有没有对用户输入关键字进行分词。