RediSearch自定义Friso词库

Python3.8

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

RediSearch 介绍

RediSearch 是 Redis Labs 提供的一款强大且高效的搜索和全文索引引擎。它是一个基于 Redis 的模块,允许用户在 Redis 数据库中进行复杂的搜索和全文检索操作,而无需将数据导出到其他搜索引擎。

RediSearch在查询时,它会先将要查询的内容进行分词处理,创建索引的时候也会分词。对于英文来说,分词比较简单,基本上空格和标点符号就可以,但是中文分词相对复杂一些,因为中文不能通过空格进行简单的分词。

RediSearch的查询用到的是friso分词方法,对于这种分词引擎相较与ik粒度更粗,功能也更单一。就目前而言RediSearch相较于es solr等全文搜索引擎还有很大的不成熟之处。

friso仓库:https://gitee.com/lionsoul/friso

自定义Friso词库

添加friso自定义词库,提高检索准确度。

  • 官方说明

If you wish to use a custom dictionary, you can do so at the module level when loading the module. The setting can point to the location of a file that contains the relevant settings and paths to the dictionary files.FRISOINIfriso.ini
Note that there is no default file location. RediSearch comes with its own and dictionary files, which are compiled into the module binary at build-time.friso.inifriso.ini

官方文档中说明,RediSearch使用的是friso进行中文分词,但RediSearch并没有设置friso的配置文件 friso.ini,如果需要进行自定义分词,需要自己配置friso.ini和自定义分词库。

由官方说明中,RediSearch默认使用的friso的默认配置,并没有使用friso.ini,我们要自定义词库,就需要添加friso.ini和自定义的词库,friso.ini的配置和自定义词库配置方式,在friso仓库中都存在,只需要将文件拷贝出来,在RediSearch启动时配置上即可。

  • 镜像: redis/redis-stack-server:latest
  • redis-stack-server启动命令,在redis-stack-server容器中entrypoint.sh可以查看
#!/usr/bin/dumb-init /bin/sh

### docker entrypoint script, for starting redis stack
BASEDIR=/opt/redis-stack
cd ${BASEDIR}

CMD=${BASEDIR}/bin/redis-server
if [ -f /redis-stack.conf ]; then
    CONFFILE=/redis-stack.conf
fi

if [ -z "${REDIS_DATA_DIR}" ]; then
    REDIS_DATA_DIR=/data
fi

# when running in redis-stack (as opposed to redis-stack-server)
if [ -f ${BASEDIR}/nodejs/bin/node ]; then
    ${BASEDIR}/nodejs/bin/node -r ${BASEDIR}/share/redisinsight/api/node_modules/dotenv/config share/redisinsight/api/dist/src/main.js dotenv_config_path=${BASEDIR}/share/redisinsight/.env &
fi

if [ -z "${REDISEARCH_ARGS}" ]; then
REDISEARCH_ARGS="MAXSEARCHRESULTS 10000 MAXAGGREGATERESULTS 10000"
fi

${CMD} \
${CONFFILE} \
--dir ${REDIS_DATA_DIR} \
--protected-mode no \
--daemonize no \
--loadmodule /opt/redis-stack/lib/rediscompat.so \
--loadmodule /opt/redis-stack/lib/redisearch.so ${REDISEARCH_ARGS} \
--loadmodule /opt/redis-stack/lib/redistimeseries.so ${REDISTIMESERIES_ARGS} \
--loadmodule /opt/redis-stack/lib/rejson.so ${REDISJSON_ARGS} \
--loadmodule /opt/redis-stack/lib/redisbloom.so ${REDISBLOOM_ARGS} \
--loadmodule /opt/redis-stack/lib/redisgears.so v8-plugin-path /opt/redis-stack/lib/libredisgears_v8_plugin.so  ${REDISGEARS_ARGS} \
${REDIS_ARGS}
  • 参数介绍:

    • REDIS_ARGS:redis的启动参数,如 添加认证密码 –requirepass redisearch
    • REDISEARCH_ARGS:redisearch的启动参数,如 添加frisio配置文件 FRISOINI /conf/friso.ini
  • 克隆仓库: git clone https://gitee.com/lionsoul/friso

  • 修改friso.ini配置

friso.lex_dir = /usr/local/share/friso/dict/UTF-8/ 
修改为
friso.lex_dir = /conf/dict/UTF-8/ 
  • 拷贝vendors/dict/UTF-8文件夹到/redisearch/conf/中,文件夹下是friso的自定义分词

  • docker命令行方式

# REDIS_ARGS redis启动参数
# REDISEARCH_ARGS redisearch参数
# /redisearch/data/:/data  数据挂载路径
# /redisearch/conf/:/conf  friso配置路径
docker run  -e REDIS_ARGS="--requirepass redisearch --protected-mode no"  -e REDISEARCH_ARGS="FRISOINI /conf/friso.ini" -v /redisearch/data/:/data -v /redisearch/conf/:/conf  -d --name redis-stack-server  -p 6379:6379 redis/redis-stack-server:latest
  • docker-compose方式
redissearch:
    image: redis/redis-stack-server
    container_name: redisearch
    environment:
      REDIS_ARGS: --requirepass redisearch --protected-mode no
      # 添加redisearch参数 启动时添加friso配置文件
      REDISEARCH_ARGS: FRISOINI /conf/friso.ini
    ports:
        - 6379:6379
    volumes:
    	# 数据挂载路径
        - /redisearch/data/:/data
        # friso配置文件路径、分词文件配置路径
        - /redisearch/conf/:/conf
    restart: on-failure
    logging:
        driver: 'json-file'
        options:
            max-size: '30m'
            max-file: '1'
参考地址

RediSearch中文支持
RedisJson和RedisSearch探究(三)
RediSearch的简单使用与总结
关于RediSearch无法正常执行模糊匹配的解决方案

您可能感兴趣的与本文相关的镜像

Python3.8

Python3.8

Conda
Python

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值