Skip to content

Latest commit

 

History

History
52 lines (39 loc) · 2.86 KB

10.ChineseSupport.md

File metadata and controls

52 lines (39 loc) · 2.86 KB

中文支持

RediSearch从0.99.0版本开始支持添加中文文档。

中文支持允许添加中文文档,并正确分词,而不再按照空格和标点分词。

由于分词方式的不同,为中文文档创建索引不同于大多数其他语言。大多数语言可以使用空格或特定分隔符来分词,但在中文并不行。

中文分词的实现,是通过扫描输入文本并按照字典或预定义的术语表,检查每个字符或字符序列,找出最可能的匹配(基于相邻的字符)。

RediSearch为此使用了Friso这个中文词库。这不需要其他配置,对用户是透明的。

举例:在RediSearch中使用中文

伪代码:

FT.CREATE idx SCHEMA txt TEXT
FT.ADD idx docCn 1.0 LANGUAGE chinese FIELDS 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

输入如下:

<b>数据</b>?... <b>数据</b>进行写操作。由于完全实现了发布... <b>数据</b>冗余很有帮助。[8... 

使用自定义字典

如果需要使用自定义的字典,可以在加载模块时配置。FRISOINI选项可以指定friso.ini文件的位置,friso.ini文件包含了字典文件路径和相关配置。 注意,不存在默认的friso.ini文件位置。RediSearch带有其自己的friso.ini和字典文件,它们在构建时被编译到模块二进制文件中。