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无法正常执行模糊匹配的解决方案

3885

被折叠的 条评论
为什么被折叠?



