wordpress仿站容易被收录不,网站开发可能遇到的问题,室内设计公司排行,微信官方网站 - 百度-百度目录 一、支持中文二、自定义中文词典2.1 Redis Search设置FRISOINI参数2.2 friso.ini文件相关配置1#xff09;自定义friso UTF-8字典2#xff09;修改friso.ini配置文件 三、实测中文分词效果 一、支持中文
Redis Stack 从版本 0.99.0 开始支持中文文档的添加和分词。中文… 目录 一、支持中文二、自定义中文词典2.1 Redis Search设置FRISOINI参数2.2 friso.ini文件相关配置1自定义friso UTF-8字典2修改friso.ini配置文件 三、实测中文分词效果 一、支持中文
Redis Stack 从版本 0.99.0 开始支持中文文档的添加和分词。中文文档的索引与其他语言不同因为中文分词是通过扫描输入文本并根据预定义词典匹配字符或字符序列来完成的而不是简单地使用空格或标点符号进行分词。Redis Stack 使用 Friso 中文分词库来实现这一功能通常不需要额外配置。
Friso 是使用 c 语言开发的一款开源的高性能中文分词器使用流行的mmseg算法实现。完全基于模块化设计和实现可以很方便的植入其他程序中 例如MySQLPHP并且提供了php5, php7, ocaml, lua的插件实现。源码无需修改就能在各种平台下编译使用加载完 20万的词条UTF-8字典仅为2.53MB内存占用稳定为 14.5M.
创建索引时支持中文
# 创建JSON索引支持中文
FT.CREATE itemIdx ON JSON PREFIX 1 item: # 使用LANGUAGE参数默认值english设置支持中文分词LANGUAGE chinese
SCHEMA $.name AS name TEXT $.description as description TEXT $.price AS price NUMERIC $.colors.* AS colors TAG $.location AS loc GEO# 检索时支持中文
# 若在创建索引时已设置了LANGUAGE则检索时无需再次设置LANGUAGE参数
FT.SEARCH itemIdx 你好 LANGUAGE chinese二、自定义中文词典
如果你希望使用自定义词典可以在加载Redis Search模块时在模块级别进行设置。FRISOINI设置可以指向包含相关设置和词典文件路径的 friso.ini 文件。 请注意没有默认的 friso.ini 文件位置。RediSearch 自带的 friso.ini 和词典文件在构建时已编译到模块二进制文件中。
2.1 Redis Search设置FRISOINI参数
具体设置FRISOINI参数的方式包括
1加载Redis Search模块时设置FRISOINI
redis-server --loadmodule ./redisearch.so FRISOINI /opt/dict/friso.ini
# 或
MODULE LOAD redisearch.so FRISOINI /opt/dict/friso.ini2运行时设置FRISOINI
# 格式 FT.CONFIG SET OPT1 VAL1
FT.CONFIG SET FRISOINI /opt/dict/friso.ini注 方式 2 官网说可以但实测在运行时修改FRISOINI配置提示不支持提示如下 3在Docker镜像中通过环境变量设置FRISOINI
# Redis Stack
docker run -d
--name redis-stack
-p 6379:6379
# 设置Redis Search配置参数
-e REDISEARCH_ARGSFRISOINI /opt/dict/friso.ini
redis/redis-stack:latest2.2 friso.ini文件相关配置
1自定义friso UTF-8字典
首先下载friso UTF-8字典 https://github.com/lionsoul2014/friso/tree/master/vendors/dict/UTF-8
在该dict/UTF-8目录下新建自定义的字典如下图新建lex-biz.lex在该自定义文件中输入业务专属的词条及其同义词集合lex-biz.lex文件示例内容如下
# 格式词条/同义词集合
# 示例格式1无同义词 你好/null
# 示例格式2有同义词 研究/琢磨,研讨,钻研
水煮鱼/水煮黑鱼,水煮清江鱼,椒盐水煮鱼,水煮鱼片,川香水煮鱼
麻辣烫/null
麻辣拌/null
麻辣香锅/null
拌面/凉拌面,炸酱面
炒面/炒河粉,炒粉,炒米粉,炒米线之后修改dict/UTF-8目录下的friso.lex.ini文件在__LEX_CJK_WORDS__配置下添加上面自定义的字典文件lex-biz.lex具体配置参见下图
之后即可将整个dict/UTF-8字典目录整体拷贝如拷贝到redis-stack-server的Docker镜像或者服务器中如将其拷贝到Docker镜像的/usr/local/share/friso/dict/UTF-8/目录下。
2修改friso.ini配置文件
首先从git仓库下载friso.ini原始配置文件 https://github.com/lionsoul2014/friso/blob/master/friso.ini
然后修改friso.ini配置文件中的friso.lex_dir为前文提到的自定义字典的存放目录/usr/local/share/friso/dict/UTF-8/
最后将修改后的friso.ini文件拷贝到redis-stack-server的Docker镜像或者服务器中如将其拷贝到Docker镜像的/usr/local/share/friso/目录下最后便可通过前文提到的RedisSearch设置FRISOINI参数的某一种方式进行FRISOINI的设置如在启动Docker时设置friso.ini配置文件
docker run -d -t
--restartalways
--name redis-stack
-p 26379:6379 -p 28001:8001
-v /opt/redis-stack/local-data/:/data
# 将宿主机上的friso自定义字典、配置目录拷贝到容器内
-v /opt/support/redis-stack/friso:/usr/local/share/friso
# 设置Redis Search配置参数FRISOINI
-e REDISEARCH_ARGSFRISOINI /usr/local/share/friso/friso.ini
redis/redis-stack:latest宿主机friso相关配置目录如下
三、实测中文分词效果
测试文本1关键词咚巴拉 “中午吃完了所谓的早茶 回去放下行李 休息了会 就来吃下午茶了[服务]两层楼 楼下只能收现金 楼上可以微信支付宝 先找座位再点单[环境]人很多 去的那时候还下雨 楼下楼上座无虚席 可见生意真是好啊「芝麻糊」其实是芝麻糊加了汤丸 我觉得这个不太腻 所以吃了挺多 「双皮奶」双皮奶第一口的味道我是很喜欢 但是吃多了有点腻 碗的分量不小 店里吃的挺多 不过不饿也就点了个招牌的尝尝咚巴拉得再有机会去的话换个别的尝尝.” 测试文本2关键词阿卡利巴 “甜品一直是我的心头肉既然来了广州不吃甜品是不会罢休的 可惜还有好几家没有办法前往。南信牛奶甜品专家是非常火的甜品店一万多条的评论就能看出之火爆 到店是中午12 点左右基本是爆满还好三楼的时候刚好有一桌起来了不然还真要站着等一会。 先点单付钱入座等待红豆双皮奶 15 元/ 份等待时长大概 15分钟 食客实在太多了 可选择冰热夏天当然要吃冰的 吃的有点小恶心又或者是自己吃不惯… 挺奇怪的杨枝甘露 20元 / 份这家的杨枝甘露很稀感觉没啥味道料很少。。 游客店 … 随随便便了阿卡利巴利人均大概 20-30” 存在测试文本1和2 且需要搜索出指定的关键词咚巴拉、阿卡利巴 则对应不同的字典定义的搜索结果命中情况见下表
自定义字典检索咚巴拉FT.SEARCH my_idx 咚巴拉检索阿卡利巴FT.SEARCH my_idx 阿卡利巴 无无无咚巴拉/null阿卡利巴/null测试文本1测试文本2咚巴拉/阿卡利巴阿卡利巴/咚巴拉测试文本1测试文本2咚巴拉/阿卡利巴测试文本1无咚巴拉/阿卡利巴额外执行FT.SYNUPDATE my_idx my_syn 咚巴拉 阿卡利巴测试文本1测试文本1咚巴拉/null阿卡利巴/null 额外执行FT.SYNUPDATE my_idx my_syn 咚巴拉 阿卡利巴测试文本1测试文本2测试文本1测试文本2 结论 Friso自定义字典格式词条/同义词集合中的词条在Redis Search中是好用的可以自定义分词Friso自定义字典格式词条/同义词集合中的同义词集合在Redis Search中不生效如果想要使用同义词功能需借助Redis Search中的同义词FT.SYNUPDATE等相关命令