当前位置:  开发笔记 > 编程语言 > 正文

禁用PostgreSQL 8.4 tsvector解析器的`file`令牌类型

如何解决《禁用PostgreSQL8.4tsvector解析器的`file`令牌类型》经验,为你挑选了1个好方法。

我有一些包含序列的文档,例如radio/tested我想在查询中返回命中

select * from doc
where to_tsvector('english',body) @@ to_tsvector('english','radio')

不幸的是,默认解析器radio/tested作为file令牌(尽管在Windows环境中),因此它与上述查询不匹配.当我运行ts_debug就可以了,这时候我看到它被识别为一个文件,并且语义最终被radio/tested而非两个词素radiotest.

有没有办法配置解析器不要寻找file令牌?我试过了

ALTER TEXT SEARCH CONFIGURATION public.english
    DROP MAPPING FOR file;

......但它没有改变输出ts_debug.如果有某种方法可以禁用file,或者至少让它识别file它认为构成目录名称的所有单词和所有单词,或者是否有办法让它将斜杠视为连字符或空格(没有性能损失)的regexp_replace荷兰国际集团他们自己),这将是很有益的.



1> alvherre..:

我想,做你想要什么的唯一方法是创建自己的解析器:-(复制wparser_def.c到一个新的文件,从剖析表(删除actionTPS_Base和它后面的那些),涉及到文件(项目TPS_InFileFirst,TPS_InFileNext等等) ,你应该设置.我认为主要的困难是使模块符合PostgreSQL的C语言(PG_FUNCTION_INFO_V1等等).看看contrib/test_parser/一个例子.

推荐阅读
郑谊099_448
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有