2015第42周六Pgsql全文索引
2015-10-17 10:20
218 查看
全文搜索通常也就是文本搜索,它可以提供满足查询的识别自然语言的能力,并且任意性地通过相关性查询进行排序。搜索最常见的类型就是找到所有包含给定的查询术语的记录,并且以相似性的查询顺序返回它们。
对于普通检索如~、~*、like和ilike操作的劣势:
1.对语言支持较弱,比如不能识别单词的复数形式,比如检索friend时不能检索出friends或者friendly。
2.没有有效的分类和排序手段,检索出的结果排序功能不好。
3.缺少索引支持,查询速度慢,特别是两头加了两个%时根本就不走索引。
PostgreSQL在8.3.x版本后开始支持全文检索。执行步骤,主要分三步走:
1.将文档分词(parsing documents into tokens)
2.转换分词规则(converting tokens into lexemes),如去掉复数后缀s/es,以及加入stop词,使之不会在分词中出现,如常用的'的'
3.按一定顺序查询的优化方式存储(storing preprocessed documents optimized for searching) tsvector存储,使用tsquery查询
在pgsql中,文档通常是一个数据库表中一行的文本字段,或者是这些字段的可能组合(级联),可能存储在多个表中或者动态的获得。也就是说,一个文档可以由索引的不同部分部分构成,它不一定非要作为一个整体存储。
中文检索的例子: http://my.oschina.net/Kenyon/blog/82305
其它:http://my.oschina.net/Kenyon/blog/80904
http://www.54chen.com/_linux_/postgresql-bamboo-lucene-part2.html
对于普通检索如~、~*、like和ilike操作的劣势:
1.对语言支持较弱,比如不能识别单词的复数形式,比如检索friend时不能检索出friends或者friendly。
2.没有有效的分类和排序手段,检索出的结果排序功能不好。
3.缺少索引支持,查询速度慢,特别是两头加了两个%时根本就不走索引。
PostgreSQL在8.3.x版本后开始支持全文检索。执行步骤,主要分三步走:
1.将文档分词(parsing documents into tokens)
2.转换分词规则(converting tokens into lexemes),如去掉复数后缀s/es,以及加入stop词,使之不会在分词中出现,如常用的'的'
3.按一定顺序查询的优化方式存储(storing preprocessed documents optimized for searching) tsvector存储,使用tsquery查询
在pgsql中,文档通常是一个数据库表中一行的文本字段,或者是这些字段的可能组合(级联),可能存储在多个表中或者动态的获得。也就是说,一个文档可以由索引的不同部分部分构成,它不一定非要作为一个整体存储。
中文检索的例子: http://my.oschina.net/Kenyon/blog/82305
其它:http://my.oschina.net/Kenyon/blog/80904
http://www.54chen.com/_linux_/postgresql-bamboo-lucene-part2.html
相关文章推荐
- 在linux上用yum安装和卸载mongodb 3.0数据库
- 为什么Redis比Memcached易
- 简析poco框架库-数据库的用法
- 浅析生产环境数据库备份与恢复
- Linux图形界面打开Oracle Net Manager
- 浅析MySQL Replication(复制)原理
- Access数据库教程_如何进行C#连接Access数据库的细节操作?
- 关于Mybatis的log4j配置SQL语句显示
- sqlserver 备份命令
- excel教学_灵活运用Excel建立有规律的数据库
- 阿里云 Ubuntu 下的Mysql安装问题
- 研究-数据库死锁
- [ArcGIS所需的补丁]ArcGIS 10.2.2 for Desktop联系Oracle(2014年10上个月发布)数据库崩溃
- 研究-关系型数据库与NOSQL
- Django 1.8.5中使用MySQL
- SQL NOT NULL 约束 高级教程
- SQL 约束 (Constraints) 高级教程
- postgresql学习line
- SQL2008 日志清除
- SQL CREATE TABLE 语句 高级教程