postgreSQL9.1集成bamboo的使用

关于中文分词如何集成使用,网上是有写例子的,之前我也写总结了下。

不过数据源可以是varchar类型的,也可以text类型。

然后通过安装后的两个分词函数tokenize和to_tsvector。使用的场景不一样。
这里我首先假设了一个数据源(该表是将数据源和索引字段放在一起)


其中content为源内容,idx_fti为content的索引内容。
然后可以在idx_fti上面建立索引,SQL语句如下:
create index 索引名 on 表名 using gist('列名')

idx_fti里存放的内容,是sql语句如下:
update 表名 set idx_fti=to_tsvector(‘chinesecfg',coalesce(content,''));

首先说下tokenize函数
运行如下SQL命令:
select tokenize('男士T恤');
返回结果如下:


这里是将语句做了分词处理,为什么要做语句分词处理呢?那是因为
select content from 表名 where idx_fti @@ '男士T恤';
或者是语句:
select content from 表名 where idx_fti @@  to_tsquery('男士T恤');
是无法获取到结果的。
返回的结果是NULL,查不出来任何的信息。

所以必须通过了分词处理后,将以空格作为分割,转换格式(这一步骤是通过程序来实现的),得到“男士|T|恤”,这样的形式。
然后再去查询,语句变成:
select content from 表名 where idx_fti @@ '男士|T|恤';
就可以得到结果了,如图:



在我另一篇安装的文章里,创建了一个chinese_utf8.stop文件。
这个文件就是用来输入需要屏蔽词,提高全文检索的效率,命令如下:
echo "的" | iconv -f gbk -t utf8 > chinese.stop.utf8 (如果你的终端是UTF8的,则可以忽略 iconv 语句。)
需要输入更多的屏蔽词的话,用命令:
 echo "屏蔽词" | iconv -f gbk -t utf8 >> chinese.stop.utf8

这里还要注意一个问题,就是
to_tsvector(‘chinesecfg',coalesce(content,''))和to_tsvector(coalesce(content,'')),生成的索引记录是不一样的,后者生成值如下:





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值