Postgresql中如何进行文本检索

小弟在做一个关于Postgresql对文本检索的研究,但是现在很困惑,如果要检索文本,我肯定先要将文本存入表中,用tsvector的格式,但是这样我在查找表的时候不又变成了表查找了吗?如何利用Postgresql进行文本检索?如何在Postgresql中建立倒排索引?请求解答,最好能给例子。(英文文本检索,不需中文)谢谢!

作者: danieldpr   发布时间: 2011-05-10

PG是个数据库,我猜你需要的是搜索引擎。

作者: gvim   发布时间: 2011-05-10

PG是个数据库,我猜你需要的是搜索引擎。

作者: gvim   发布时间: 2011-05-10

PG是个数据库,我猜你需要的是搜索引擎。

作者: gvim   发布时间: 2011-05-10

把TSVECTOR字段做全文索引,索引类型一般为GIN,或作GIST,我用的是GIN .

查找的时候,匹配该字段就可以了,假设该字段名称为:fts_keywords,要查找关键字是ABC,
那么格式类似:

SELECT  *  FROM  TABLE  WHERE   fts_keywords  @@  to_tsquery('ABC');


数据库当然是从表里面查找,不是想GOOGLE那样基于文本查找,这种查找模式可以解决标准SQL的缺陷:
比如  SQL 的 LIKE   '%ABC%',它不能利用索引,所以速度非常的慢,而采用全文搜搜,速度就非常的快,

如果同时要搜索一个表的多个字段,那么传统的SQL 就很麻烦,且效率低下,而用全文搜索,语法就非常简洁,

作者: tony_trh   发布时间: 2011-05-10