是否存在忽略某些标记的神奇函数或运算符?
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
最佳答案
恐怕你被卡住了。如果通过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)
从上面可以看出,你没有快速和棕色的代币
关于postgresql - Postgresql:如何使全文本搜索忽略某些标记?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/896752/