Postgres全文搜索:多列,交叉表

时间:2012-11-06 17:58:00

标签: postgresql full-text-search tsvector

我是Postgres的新手并且遇到了全文搜索功能。我想实现以下目标:

  • 指定要搜索的一些表格和字段。
  • 当用户搜索某些文本时,应在上面指定的表字段中搜索它。

e.g。

CREATE TABLE customer (name text)
CREATE TABLE address (city text)

搜索'Ram'应该找到名字'Ram *'和城市'Ram *'(可能是最多10条记录)。

开放点:排名。

我理解它可能不是直截了当,但是如果你能提供类似的实例陈述呢?

1 个答案:

答案 0 :(得分:3)

PostgreSQL documentation on full-text search中详细介绍了这一点,其中显示了搜索多个列并对其进行加权的示例。

特别参见controlling full-text searchmanipulating documents。排名也在ranking search results

您还没有真正提供足够的信息来说明更多内容。为了搜索多个表,您通常希望JOIN表格然后查询它们,或者为了获得最佳性能,创建一个触发器维护的物化视图,您可以对其进行索引,然后进行查询。

如果表是独立且不相关的,那么在单个查询中查询它们没有多大意义;你通常会为此使用多个tsearch2查询。我想你可能UNION ALL查询结果然后对它们进行排名,但不能保证两个表之间的排名是一致的。