关于中文分词如何集成使用,网上是有写例子的,之前我也写总结了下。
不过数据源可以是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',''))和to_tsvector(coalesce(content,'')),生成的索引记录是不一样的,后者生成值如下: (编辑:李大同)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|