我是Postgres的新手并且遇到了全文搜索功能。我想实现以下目标:
e.g。
CREATE TABLE customer (name text)
CREATE TABLE address (city text)
搜索'Ram'应该找到名字'Ram *'和城市'Ram *'(可能是最多10条记录)。
开放点:排名。
我理解它可能不是直截了当,但是如果你能提供类似的实例陈述呢?
答案 0 :(得分:3)
PostgreSQL documentation on full-text search中详细介绍了这一点,其中显示了搜索多个列并对其进行加权的示例。
特别参见controlling full-text search和manipulating documents。排名也在ranking search results。
您还没有真正提供足够的信息来说明更多内容。为了搜索多个表,您通常希望JOIN
表格然后查询它们,或者为了获得最佳性能,创建一个触发器维护的物化视图,您可以对其进行索引,然后进行查询。
如果表是独立且不相关的,那么在单个查询中查询它们没有多大意义;你通常会为此使用多个tsearch2查询。我想你可能UNION ALL
查询结果然后对它们进行排名,但不能保证两个表之间的排名是一致的。