postgres中的模糊全文搜索

时间:2016-12-26 23:25:17

标签: sql postgresql

我正在尝试在Web应用程序上实现搜索,我可以在表格中的多个字段上进行全文搜索,这些字段也支持部分或稍微关闭的查询匹配。

我的计划是创建一个物化视图,然后为模糊(三元组)搜索创建一个索引。但我不太确定这是否是正确的方法。

这是我到目前为止所拥有的。我很确定SQL是不正确的,但我真的不知道如何纠正它。我还是有点新鲜的。第一次在ORM之外工作。

我正在使用postgres 9.5.5。

CREATE MATERIALIZED VIEW search AS
SELECT word FROM ts_stat(
    'SELECT (
        setweight(to_tsvector(''simple'', location.name), ''A'')
        || setweight(to_tsvector(''simple'',locations.street), ''B'')
        || setweight(to_tsvector(''simple'',locations.state), ''C'')
        || setweight(to_tsvector(''simple'',locations.city), ''C'')
        || setweight(to_tsvector(''simple'',locations.zip,), ''B'') AS document,
    )
    FROM locations
    GROUP BY locations.id
    '
);

表位置
命名
街道
状态
城市
拉链
地理位置

1 个答案:

答案 0 :(得分:2)

问题中的物化视图定义似乎没有任何意义。 ts_stat()用于调试文本搜索设置。

Full text search与使用LIKE或正则表达式(使用trigram索引)的模式匹配完全不同。

多列上的模糊模式匹配,用于"略微关闭"模式根本不是微不足道的。设置需要考虑您的确切要求,以获得正确的"结果并排除"错误"那些,同时保持良好的表现。

为了帮助您入门: