我已经在postgres数据库中的一些表上配置了全文搜索。当我试图用多于一个单词构建tsquery时,我在tsquery中得到了用&(AND)作为分隔符的单词。实际上,我找不到结果,我只问了其中一个词。
例子:

| ID | Name    | Description         | Rank |
|----|---------|---------------------|------|
| 1  |Somethink|This is very strange | 0.2  |
| 2  |Other    |This is strange a bit| 0    |

当我要求“非常奇怪”时,我的tsquery看起来是这样的'very' & 'strange'
,并且该tsquery的秩(ts_rank_cd)仅对于ID==1大于0,对于ID==2为0。
我的目标是在第二句中达到0级以上。
有什么想法/建议/解决方案吗?

最佳答案

您可以按照以下方式创建OR版本的plainto_tsquery

select replace(plainto_tsquery('foo bar')::text, '&', '|')::tsquery;

类似于klin的建议,但利用了plainto_tsquery的堵塞能力。
另外,我认为very是一个停止字,因此它不会包含在任何to_tsqueryplainto_tsquery输出中。

关于postgresql - 如何在postgres全文搜索中使用替代构建tsquery,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40271758/

10-11 03:22