是否有一个魔术函数或运算符来忽略某些标记?
select to_tsvector('the quick. brown fox') @@ 'brown' -- returns true
select to_tsvector('the quick,brown fox') @@ 'brown' -- returns true
select to_tsvector('the quick.brown fox') @@ 'brown' -- returns false, should return true
select to_tsvector('the quick/brown fox') @@ 'brown' -- returns false, should return true
答案 0 :(得分:4)
我担心你可能会卡住。如果您通过ts_debug运行您的术语,您将看到'quick.brown'被解析为主机名,'quick / brown'被解析为文件系统路径。解析器真的不是那么聪明。
我唯一的建议是您预处理文本以将这些标记转换为空格。您可以在plpgsql中轻松创建一个函数来执行此操作。
nicg=# select ts_debug('the quick.brown fox');
ts_debug
---------------------------------------------------------------------
(asciiword,"Word, all ASCII",the,{english_stem},english_stem,{})
(blank,"Space symbols"," ",{},,)
(host,Host,quick.brown,{simple},simple,{quick.brown})
(blank,"Space symbols"," ",{},,)
(asciiword,"Word, all ASCII",fox,{english_stem},english_stem,{fox})
(5 rows)
从上面你可以看到你没有得到快速和棕色的令牌