Postgresql全文搜索标记器

Postgresql全文搜索标记器,第1张

概述刚遇到问题.我正在尝试在本地化内容(特别是俄语)上设置全文搜索.问题是默认配置(以及我的自定义)不处理字母案例.例: SELECT * from to_tsvector('test_russian', 'На рынке появились новые рублевые облигации');> 'На':1 'новые':4 'облигации':6 'появились':3 'руб 刚遇到问题.我正在尝试在本地化内容(特别是俄语)上设置全文搜索.问题是默认配置(以及我的自定义)不处理字母案例.例:
SELECT * from to_tsvector('test_russian','На рынке появились новые рублевые облигации');> 'На':1 'новые':4 'облигации':6 'появились':3 'рублевые':5 'рынке':2

‘На’是一个禁用词,应该删除,但它甚至不会在结果向量中降低.如果我传递小写字符串,一切正常

SELECT * from to_tsvector('test_russian','на рынке появились новые рублевые облигации');> 'новые':4 'облигации':6 'появились':3 'рублевые':5 'рынке':2

当然,我可以传递预先小写的字符串,但手动说

The simple dictionary template operates by converting the input token
to lower case and checking it against a file of stop words.

配置russian_test看起来像这样:

create text search CONfigURATION test_russian (copY = 'russian');CREATE TEXT SEARCH DICTIONARY russian_simple (    TEMPLATE = pg_catalog.simple,StopWORDS = russian);CREATE TEXT SEARCH DICTIONARY russian_snowball (    TEMPLATE = snowball,Language = russian,StopWords = russian);alter text search configuration test_russian     alter mapPing for word    with russian_simple,russian_snowball;

但实际上我使用内置的俄语配置获得了完全相同的结果.

我按照预期尝试将ts_deBUG和令牌视为单词.

有任何想法吗?

问题解决了.原因是数据库是使用默认(“C”)CType和Collat​​e启动的.
我们用了
initdb --locale=UTF-8 --lc-collate=UTF-8 --enCoding=UTF-8 -U pgsql *PGsql DATA DIR*

重新创建实例和

CREATE DATABASE "scratch"  WITH OWNER "postgres"  ENCoding 'UTF8'  LC_ColLATE = 'ru_RU.UTF-8'  LC_CTYPE = 'ru_RU.UTF-8';

重新创建数据库和简单字典现在工作.

总结

以上是内存溢出为你收集整理的Postgresql全文搜索标记器全部内容,希望文章能够帮你解决Postgresql全文搜索标记器所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/1181823.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-02
下一篇 2022-06-02

发表评论

登录后才能评论

评论列表(0条)

保存