SELECT 'Three little birds are sitting on a tree'::tsvector @@ to_tsquery('simple','birds');
我是否可以在查询中进行修改,以便在句子中定义搜索词必须满足的特定位置?
在本例中,“birds”位于句子的第三个位置,因此我可以修改约束,使其仅在给定位置找到匹配项时返回true,如
to_tsquery2('simple','birds',3) // => true
虽然
to_tsquery2('simple','birds',5) // => false
最佳答案
在PostgreSQL全文搜索中没有这方面的规定。
但你可以在文本前加上一个“标记”,然后滥用短语搜索:
SELECT to_tsvector('simple',
'quagga '
|| 'Three little birds are sitting on a tree'
)
@@ to_tsquery('simple',
'quagga <3> ' || 'birds'
);
?column?
----------
t
(1 row)
短语
a <3> b
匹配一个包含a
和b
的句子,中间有两个作品。您必须使用文本中不出现的
quagga
。