gpt4 book ai didi

postgresql - 在 tsquery (postgresql) 中转义连字符

转载 作者:行者123 更新时间:2023-11-29 11:44:30 26 4
gpt4 key购买 nike

我需要根据以下格式的字符串创建一个tsquery:

something-smth-somthing-etc-etc

调用 to_tsquery('something-smth-somthing-etc-etc') 返回:

'something-smth-somthing-etc-etc' & 'someth' & 'smth' & 'somth' & 'etc' & 'etc'

很明显,字符串经历了标记化、词干提取等。但在我们的例子中,我们在其上制作 FTS 的列已经包含由单个词素组成的 tsvector:'something-smth-somthing-etc-etc'

查询select * from sometable where searchee @@ to_tsquery('something-smth-somthing-etc-etc') 不返回任何结果。

如何调用 to_tsquery,使其不分析提供的字符串并创建单个词素查询?

还是我在这里遗漏了更重要的东西?

最佳答案

假设你有带有提及值的 tsvector,它没有被处理,只是作为 tsvecor 类型插入:

t=# select to_tsvector('something-smth-somthing-etc-etc'), 'something-smth-somthing-etc-etc'::tsvector;
to_tsvector | tsvector
-----------------------------------------------------------------------------------+-----------------------------------
'etc':5,6 'smth':3 'something':2 'something-smth-somthing-etc-etc':1 'somthing':4 | 'something-smth-somthing-etc-etc'
(1 row)

确实你会有错误:

t=# select 'something-smth-somthing-etc-etc'::tsvector @@ to_tsquery('something-smth-somthing-etc-etc');
?column?
----------
f

要破解它,您也可以跳过对 tsquery 的处理:

t=# select 'something-smth-somthing-etc-etc'::tsvector @@ 'something-smth-somthing-etc-etc'::tsquery;
?column?
----------
t

关于postgresql - 在 tsquery (postgresql) 中转义连字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47495228/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com