无法使用to_tsvector和to_tsquery

时间:2017-10-25 15:28:39

标签: postgresql full-text-search

我想获取用户在数据库中输入的单词:

select name 
from users
where to_tsvector(name) @@ to_tsquery('$word:*')

我提到word = alain john smith,当我运行查询时出现此错误:

syntax error in tsquery: "alain john smith"

plainto_tsquery无法识别输入Parsing queries

中的布尔运算符,权重标签或前缀匹配标签

我该如何解决?

1 个答案:

答案 0 :(得分:1)

tsquery不能包含alain john smith,因为解析器会将其拆分为三个单词。

如果你有PostgreSQL 9.6或更高版本,你可以使用

to_tsquery('alain <-> john <-> smith')

使用“后跟”运算符<->

在旧版本中,您可以做的最好的是

to_tsquery('alain & john & smith')

将匹配包含所有三个单词的字符串,但不一定相邻或按此顺序排列。