2015第42周六Pgsql全文索引
全文搜索通常也就是文本搜索,它可以提供满足查询的识别自然语言的能力,并且任意性地通过相关性查询进行排序。搜索最常见的类型就是找到所有包含给定的查询术语的记录,并且以相似性的查询顺序返回它们。
对于普通检索如~、~*、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
2015第42周六Pgsql全文索引的更多相关文章
- 2015第44周六tomcat集群了解
对于WEB应用集群的技术实现而言,最大的难点就是如何能在集群中的多个节点之间保持数据的一致性,会话(Session)信息是这些数据中最重要的一块.要实现这一点,大体上有两种方式,一种是把所有Sessi ...
- 2015第29周六Spring
搜了一下Spring相关的经典书籍: <Spring实战(第3版)>从核心的Spring.Spring应用程序的核心组件.Spring集成3个方面,由浅入深.由易到难地对Spring展开了 ...
- 2015第28周六SVN和Git
svn作为一个优秀源码版本的管理工具,可以适合绝大多数项目.但是因为它的采用中心化管理,不可避免的存在本地代码的备份和版本管理问题.也就是说对于尚未或暂无法提交到Subversion服务器的本地代码来 ...
- 2015第22周六Java反射、泛型、容器简介
Java的反射非常强大,传递class, 可以动态的生成该类.取得这个类的所有信息,包括里面的属性.方法以及构造函数等,甚至可以取得其父类或父接口里面的内容. obj.getClass().getDe ...
- 2015第16周六学习java建议
学习Java 建议: 尽量用 google 查找技术资料. 有问题在 stackoverflow 找找,大部分都已经有人回答. 多看官方的技术文档. ibm developerworkers 的文章质 ...
- 2015第15周六Java线程池
Java里面线程池的顶级接口是Executor,但是严格意义上讲Executor并不是一个线程池,而只是一个执行线程的工具.真正的线程池接口是ExecutorService. 比较重要的几个类: Ex ...
- ELK 日志管理系统,初次尝试记录
简介: ELK 是一套开源的日志管理平台,主要包括三个组件,可以用于日志的收集.分析.存储和展示工作. ELK 成员:Elasticsearch .Logstash .Kibana( K4 ) ELK ...
- pandas基础-Python3
未完 for examples: example 1: # Code based on Python 3.x # _*_ coding: utf-8 _*_ # __Author: "LEM ...
- Fedora 22中的DNF软件包管理工具
Introduction DNF is the The Fedora Project package manager that is able to query for information abo ...
随机推荐
- Java代码操作HDFS(在/user/root/下面創建目錄)
1.创建HDFS目录并打成jar包 package Hdfs; import java.io.IOException; import java.net.URI; import org.apache.h ...
- MVC创建通用DropdownList
起因 MVC项目中有数据字典表,定义了多个类型,需要给每个类型做下拉菜单. 不可能每个类型,都敲一个代码,需要做成通用 思路 利用MVC的部件方式,分别定义Controller,View和Model: ...
- 国内最简单的短视频SDK
最近阿里百川和趣拍一起合作推出了一个短视频SDK.之前很多厂商可能都是用的Vitamio的短视频SDK.之后我考察过,也做过一些调查,发现Vitamio真的奇贵无比,屌丝公司根本用不起,阿里和趣拍这下 ...
- sql 删除表数据truncate delete drop的区别
已下内容为转载内容:学习之用 1.truncate和不带where子句的delete.以及drop都会删除表内的数据. 2.drop.truncate都是DDL语句(数据定义语言),执行后会自动提交. ...
- MySQL 连接数据库
一.MySQL 连接本地数据库,用户名为“root”,密码“123”(注意:“-p”和“123” 之间不能有空格),缺点:密码显示在显示器上,容易泄露. C:\>mysql -h localho ...
- CSS 列表
CSS列表属性作用如下: 设置不同的列表项标记为有序列表 设置不同的列表项标记为无序列表 设置列表项标记为图像 列表 在HTML中,有两种类型的列表: 无序列表 - 列表项标记用特殊图形(如小黑点.小 ...
- Android Studio 中解决.9图片报错的问题
- jQuery慢慢啃之回调(十三)
1.callbacks.add(callbacks)//回调列表中添加一个回调或回调的集合 // a sample logging function to be added to a callback ...
- 关于sqlserver2012重启后ID自增1000的问题解决方案
1. Open "SQL Server Configuration Manager" 2. Click "SQL Server Services" on the ...
- C#连接、访问MySQL数据库
一.准备工具 visual stuido(本示例使用visual studio 2010) MySql.Data.dll mysql_installer_community_V5.6.21.1_set ...