Postgres的全文搜索何时支持短语匹配和邻近匹配?

时间:2010-05-25 21:36:12

标签: postgresql full-text-search

截至Postgres 8.4,数据库fts不支持精确的短语匹配,如果给出2个术语,它也不支持邻近匹配。例如,没有办法告诉Postgres匹配单词#1的内容,该单词位于单词#2的指定邻近区域。任何人都知道Postgres的计划,可能支持短语和邻近匹配的哪个版本?

2 个答案:

答案 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.目前,此页面未提及全短语搜索。