前提:本地是mac,没有使用docker和compose进行部署,拷贝代码直接部署,部署成功,但是发现中文分词存储失败。
自己解决过程:以为是postgresql的版本问题,项目用的是10,我本地用的是11,后来本地改成10,还是存储失败。然后考虑是否是一些项目依赖或者postgresql的插件依赖问题,搜索了项目的安装依赖文件,没有看到相关的依赖。
备注:本地使用docker和compose进行部署的时候,中文分词是存储成功。

具体代码在这里
Post.where(id: id).update_all(Post.sanitize_sql(["search_data = to_tsvector(?)", data]))
post提交的内容为"hello world" 能够存储成功
Post.where(id: id).update_all("search_data = to_tsvector('hello world \n')")
Post.where(id: id).search_data #=>"'hello':1 'world':2"

post提交的内容为“内置缺省分词解析器采用空格分词”,存储为空。
Post.where(id: id).update_all("search_data = to_tsvector('内置 缺省 分词 解析器 采用 空格 分词 \n')")
Post.where(id: id).search_data #=>""

打一下原始日志,特别是 SQL 语句。

怀疑是本地 pg 的字符集配置有什么不同。

Sign in to post
/