postgresql的Tsearch2应用简要
(2009-03-02 15:48)
分类: 言过其实
Postgresql(http://zh.wikipedia.org/wiki/PostgreSQL) 是一个自由的对象-关系数据库服务器(数据库管理系统)其特性包括:
- 复杂查询
- 外键
- 触发器
- 视图
- 事务完整性
- 多版本并发控制
安装tsearch2,只要去到postgresql的源代码目录,/tmp/postgresql-8.3.6/contrib/tsearch2/
可能你们解压的目录不同,请对应,进到tsearch2目录之后,运行:gmake && gmake install 就可以安装好二进制文件,接着,运行当中的一个叫 : psql postgres -U postgres < tsearch2.sql 这个是注册 tsearch2 的函数文件 如果不能直接运行 psql,请更改路经,目前已安装完成,
测试如下面的例子
我们先创建一个表:
CREATE TABLE tblMessages可以看到,使用 idxfti @@ to_tsquery 的方式来进行搜索
(
intIndex int4,
strTopic varchar(100),
strMessage text,
idxFTI tsvector
);
新着,我们插入一些数据
INSERT INTO tblMessages
VALUES ('8', 'My birth address',
'18 Sommervile road, Regina, Saskatchewan',to_tsvector(strTopic||' '||strMessage));
INSERT INTO tblMessages
VALUES ('9', 'Joke', 'knock knock : who\'s there? I will not finish this joke',to_tsvector(strTopic||' '||strMessage)
);
INSERT INTO tblMessages
VALUES ('10', 'Computer information',
'My computer is a pentium III 400 mHz'
' with 192 megabytes of RAM',to_tsvector(strTopic||' '||strMessage)
);
先插入三条
我们进行简单的搜索
SELECT intindex, strtopic FROM tblmessages
WHERE idxfti @@ to_tsquery('default', 'Computer| Joke');
intindex | strtopic
----------+--------------------
10 | Computer information
9 | Joke
(2 rows)
在Tsearch2中,可以用到语义,字典,分数算法,在分数算法上面,会对字与字之间的距离,关键字词出现的次数等进行分值对比
如下:
SELECT id, headline(doc, q), rank(vector, q)
FROM docs, to_tsquery($1) AS q
WHERE vector @@ q ORDER BY rank(vector, q) DESC'
来自 www.bowenye.com

