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 就很麻烦,且效率低下,而用全文搜索,语法就非常简洁,
查找的时候,匹配该字段就可以了,假设该字段名称为:fts_keywords,要查找关键字是ABC,
那么格式类似:
SELECT * FROM TABLE WHERE fts_keywords @@ to_tsquery('ABC');
数据库当然是从表里面查找,不是想GOOGLE那样基于文本查找,这种查找模式可以解决标准SQL的缺陷:
比如 SQL 的 LIKE '%ABC%',它不能利用索引,所以速度非常的慢,而采用全文搜搜,速度就非常的快,
如果同时要搜索一个表的多个字段,那么传统的SQL 就很麻烦,且效率低下,而用全文搜索,语法就非常简洁,
作者: tony_trh 发布时间: 2011-05-10