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和Collate启动的.我们用了
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全文搜索标记器所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)