截至Postgres 8.4,数据库fts不支持精确的短语匹配,如果给出2个术语,它也不支持邻近匹配。例如,没有办法告诉Postgres匹配单词#1的内容,该单词位于单词#2的指定邻近区域。任何人都知道Postgres的计划,可能支持短语和邻近匹配的哪个版本?
答案 0 :(得分:4)
PostgreSQL 9.6文本搜索现在支持短语
select
*
from (values
('i heart new york'),
('i hate york new')
) docs(body)
where
to_tsvector(body) @@ phraseto_tsquery('new york')
(1 row retrieved)
或单词之间的距离:
-- a distance of exactly 2 "hops" between "quick" and "fox"
select
*
from (values
('the quick brown fox'),
('quick brown cute fox')
) docs(body)
where
to_tsvector(body) @@ to_tsquery('quick <2> fox')
(1 row retrieved)
答案 1 :(得分:2)
http://linuxgazette.net/164/sephton.html
<snip>
搜索向量
如何使用解析器和词典将文档内容转换为词汇数组?如何匹配搜索标准ti正文? PostgreSQL提供了许多功能来完成这项工作。我们将要看的第一个是to_tsvector()。
tsvector是一种内部数据类型,包含带位置信息的词汇数组。搜索时使用词位位置,基于邻近度和其他信息对搜索结果进行排名。可以通过标记构成搜索文档内容的不同部分来控制排名,例如,通过不同地标记这些部分,可以在搜索期间不同地加权标题,正文和摘要。部分标签,非常简单的A,B,C&amp; D,在创建时与tsvector相关联,但在事后可以控制与这些标签相关联的权重修饰符。
</snip>
对于全短语搜索,see here.
Postgresql网站没有路线图。相反,您被引用到Open Issues page.目前,此页面未提及全短语搜索。