中文支持
Redis Stack 中的中文搜索和查询支持
从版本0.99.0开始支持添加中文文档。
中文支持允许添加中文文档并使用分词进行标记化,而不是使用空格和/或标点符号进行简单的标记化。
索引中文文档与索引大多数其他语言的文档不同,因为标记的提取方式不同。虽然大多数语言的标记可以通过分隔符和空格来区分,但在中文中并不常见。
中文分词是通过扫描输入文本,并根据预定义术语的字典检查每个字符或字符序列,然后根据周围的术语和字符确定最可能的匹配来完成的。
Redis Stack 为此目的使用了 Friso 中文分词库。这对用户来说基本上是透明的,通常不需要额外的配置。
示例:在查询中使用中文
在伪代码中:
FT.CREATE idx ON HASH SCHEMA txt TEXT
HSET docCn txt "Redis支持主从同步。数据可以从主服务器向任意数量的从服务器上同步,从服务器可以是关联其他从服务器的主服务器。这使得Redis可执行单层树复制。从盘可以有意无意的对数据进行写操作。由于完全实现了发布/订阅机制,使得从数据库在任何地方同步树时,可订阅一个频道并接收主服务器完整的消息发布记录。同步对读取操作的可扩展性和数据冗余很有帮助。[8]"
FT.SEARCH idx "数据" LANGUAGE chinese HIGHLIGHT SUMMARIZE
# Outputs:
# <b>数据</b>?... <b>数据</b>进行写操作。由于完全实现了发布... <b>数据</b>冗余很有帮助。[8...
使用Python客户端:
# -*- coding: utf-8 -*-
from redisearch.client import Client, Query
from redisearch import TextField
client = Client('idx')
try:
client.drop_index()
except:
pass
client.create_index([TextField('txt')])
# Add a document
client.add_document('docCn1',
txt='Redis支持主从同步。数据可以从主服务器向任意数量的从服务器上同步从服务器可以是关联其他从服务器的主服务器。这使得Redis可执行单层树复制。从盘可以有意无意的对数据进行写操作。由于完全实现了发布/订阅机制,使得从数据库在任何地方同步树时,可订阅一个频道并接收主服务器完整的消息发布记录。同步对读取操作的可扩展性和数据冗余很有帮助。[8]',
language='chinese')
print client.search(Query('数据').summarize().highlight().language('chinese')).docs[0].txt
# Outputs:
# <b>数据</b>?... <b>数据</b>进行写操作。由于完全实现了发布... <b>数据</b>冗余很有帮助。[8...
使用自定义词典
如果您希望使用自定义词典,可以在加载模块时在模块级别进行设置。FRISOINI
设置可以指向包含相关设置和词典文件路径的 friso.ini
文件的位置。
请注意,没有默认的friso.ini
文件位置。RediSearch自带其自己的friso.ini
和字典文件,这些文件在构建时被编译到模块二进制文件中。