windows 下安装
版本匹配
python-3.4.3.amd64.msi
postgresql-10.1-2-windows-x64.exe

create language plpython3u;
select * from pg_language ;

psql -h 127.0.0.1 -p 5432 postgres postgres

python setup.py install

jieba.cut 方法接受三个输入参数: 需要分词的字符串;cut_all 参数用来控制是否采用全模式;HMM 参数用来控制是否使用 HMM 模型
jieba.cut_for_search 方法接受两个参数:需要分词的字符串;是否使用 HMM 模型。该方法适合用于搜索引擎构建倒排索引的分词,粒度比较细
待分词的字符串可以是 unicode 或 UTF-8 字符串、GBK 字符串。注意:不建议直接输入 GBK 字符串,可能无法预料地错误解码成 UTF-8
jieba.cut 以及 jieba.cut_for_search 返回的结构都是一个可迭代的 generator,可以使用 for 循环来获得分词后得到的每一个词语(unicode),或者用
jieba.lcut 以及 jieba.lcut_for_search 直接返回 list
jieba.Tokenizer(dictionary=DEFAULT_DICT) 新建自定义分词器,可用于同时使用不同词典。jieba.dt 为默认分词器,所有全局分词相关函数都是该分词器的映射。

# encoding=utf-8
import jieba

seg_list = jieba.cut("我来到北京清华大学", cut_all=True)
print("Full Mode: " + "/ ".join(seg_list)) # 全模式

seg_list = jieba.cut("我来到北京清华大学", cut_all=False)
print("Default Mode: " + "/ ".join(seg_list)) # 精确模式

seg_list = jieba.cut("他来到了网易杭研大厦") # 默认是精确模式
print(", ".join(seg_list))

seg_list = jieba.cut_for_search("小明硕士毕业于中国科学院计算所,后在日本京都大学深造") # 搜索引擎模式
print(", ".join(seg_list))

--方法体内 需要写python语法
create or replace function to_tsv(i_state int,i_text text) returns tsvector as $$
import jieba
if i_state == 1:
seg_list = jieba.cut(i_text, cut_all=True)
elif i_state == 2:
seg_list = jieba.cut(i_text, cut_all=False)
elif i_state == 3:
seg_list = jieba.cut_for_search(i_text)
return(" ".join(seg_list))
$$ language plpython3u;

cd E:\PostgreSQL_common\pgsql\jieba-master

python setup.py install

psql -h 127.0.0.1 -p 5432 postgres postgres

drop language plpython3u;

create language plpython3u;

--python2使用
create language plpythonu;

create or replace function to_tsv(i_text text) returns tsvector as $$
import jieba
seg_list = jieba.cut(i_text, cut_all=True);
return("".join(seg_list))
$$ language plpython3u;

-- python 2.7.5使用
create or replace function to_tsv(i_text text) returns tsvector as $$
import jieba
seg_list = jieba.cut(i_text, cut_all=True);
return("".join(seg_list))
$$ language plpythonu;

select to_tsv('我爱北京天安门');

create or replace function to_tsv(i_text text) returns tsvector as $$
import jieba
seg_list = jieba.cut(i_text, cut_all=True);
return("".join(seg_list))
$$ language plpython3u;

create or replace function to_tsv(i_text text) returns tsvector as $$
$$ language plpython3u;

from /opt/python343/lib/python3.4/site-packages/jieba import cut

把“import *****”改为“from 文件路径 import *****”;

create or replace function to_tsv(i_text text) returns tsvector as $$
$$ language plpython3u;

create table ICC_T_ADDRESS
(
GUID VARCHAR(64),
ADDRESS VARCHAR(128),
NAME VARCHAR(128),
SHORTNAME VARCHAR(64),
HISNAME VARCHAR(128),
SZM VARCHAR(64),
PINYIN VARCHAR(64),
X numeric(10,6),
Y numeric(10,6),
TYPE VARCHAR(64),
LINKPHONE VARCHAR(64),
tsvnameaddress tsvector
)

create index idx_tsv_address on ICC_T_ADDRESS using gin(tsvnameaddress);//创建gin索引

create trigger tsvupdate after insert
on ICC_T_ADDRESS for each row execute procedure
tsv_update_trigger();

create or replace function tsv_update_trigger() returns trigger as $$
declare
begin
update ICC_T_ADDRESS set tsvnameaddress = to_tsv(name || address) where guid=NEW.guid;
return null;
end;
$$ language plpgsql;

create or replace function tsv_update_trigger() returns trigger as $$
declare
begin
update ICC_T_ADDRESS set tsvnameaddress = to_tsv(COALESCE(name,'') || COALESCE(address,'')) where guid=NEW.guid;
return null;
end;
$$ language plpgsql;

insert into ICC_T_ADDRESS(guid,NAME,ADDRESS) values(1,'西北风面馆','黑龙江省');
insert into ICC_T_ADDRESS(guid,NAME,ADDRESS) values(2,'和兴小学','黑龙江省');
insert into ICC_T_ADDRESS(guid,NAME,ADDRESS) values(3,'师范附小','黑龙江省');

select guid,name,address,tsvnameaddress from ICC_T_ADDRESS where tsvnameaddress @@ to_tsquery('振兴|街');
select guid,name,address,tsvnameaddress from ICC_T_ADDRESS where tsvnameaddress @@ '振兴|街';
select guid,name,address,tsvnameaddress,ts_rank(tsvnameaddress, to_tsquery('振兴')) from ICC_T_ADDRESS;

select guid,name,address,tsvnameaddress,ts_rank(tsvnameaddress, to_tsquery('三')) from ICC_T_ADDRESS order by ts_rank(tsvnameaddress, to_tsquery('三')) desc;

SELECT t.rank_cd as score,t.address,t.name,t.shortname,t.hisname,t.szm,t.pinyin,t.x,t.y,t.type,t.linkphone,t.guid
from(select t.* ,"row_number"() over(ORDER BY t.rank_cd desc ) as rownum from ( SELECT ts_rank(tsvnameaddress, to_tsquery(to_tsv_text('富桥综合市场'))) as rank_cd,* from icc_t_address ) t ) t
order by score desc

create or replace function to_tsv_text(i_text text) returns text as $$
import jieba
seg_list = jieba.cut(i_text, cut_all=True);
return("|".join(seg_list))
$$ language plpython3u;

select t2.* from(select t.*,
row_number() over (order by (ts_rank(tsvnameaddress,to_bigram_tsquery('富桥综合市场', '|'))) desc) as rownum
from icc_t_address t
where tsvnameaddress@@to_bigram_tsquery('富桥综合市场', '|')) t2

SELECT t2.rank_cd as score,t2.address,t2.name,t2.shortname,t2.hisname,
t2.szm,t2.pinyin,t2.x,t2.y,t2.type,t2.linkphone,t2.guid
from (SELECT ts_rank(tsvnameaddress, to_tsquery(t1.tsv_text)) as rank_cd,*
from (select * from icc_t_address,(select to_tsv_text('富桥综合市场') as tsv_text) t) t1
where tsvnameaddress@@to_tsquery(t1.tsv_text) order by rank_cd desc) t2

plpython 中文分词Windows 版的更多相关文章

  1. plpython 中文分词Windows下 PG数据库jieba分词

    windows 下安装版本匹配python-3.4.3.amd64.msipostgresql-10.1-2-windows-x64.exe create language plpython3u;se ...

  2. 中科院NLPIR中文分词java版

    中科院NLPIR中文分词java版 中科院NLPIR中文分词java版

  3. jieba中文分词.net版

    先看效果: .Net 可以通过NuGet安装 PM> Install-Package jieba.NET 注意 安装之后把Resources文件夹复制到程序集所在目录即可(bun/Debug里面 ...

  4. crf++实现中文分词简单例子 (Windows crf++0.58 python3)

    学习自然语言处理的同学都知道,条件随机场(crf)是个好东西.虽然它的原理确实理解起来有点困难,但是对于我们今天用到的这个crf工具crf++,用起来却是挺简单方便的. 今天只是简单试个水,参考别人的 ...

  5. Windows ElasticSearch中文分词配置

    elasticsearch官方只提供smartcn这个中文分词插件,效果不是很好,好在国内有medcl大神(国内最早研究es的人之一)写的两个中文分词插件,一个是ik的,一个是mmseg的,下面分别介 ...

  6. 中文分词接口api,采用结巴分词PHP版中文分词接口

    中文分词,分词就是将连续的字序列按照一定的规范重新组合成词序列的过程.我们知道,在英文的行文中,单词之间是以空格作为自然分界符的,而中文只是字.句和段能通过明显的分界符来简单划界,唯独词没有一个形式上 ...

  7. windows 上配置solr5.2.1+solr4.3+中文分词器

    搭建5.2.1 1.下载 Tomcat解压后的目录为 D:\Program Files\Apache Software Foundation\apache-tomcat-8.0.22 solr解压后的 ...

  8. 中文分词算法之最大正向匹配算法(Python版)

    最大匹配算法是自然语言处理中的中文匹配算法中最基础的算法,分为正向和逆向,原理都是一样的. 正向最大匹配算法,故名思意,从左向右扫描寻找词的最大匹配. 首先我们可以规定一个词的最大长度,每次扫描的时候 ...

  9. Windows下面安装和配置Solr 4.9(三)支持中文分词器

    首先将下载解压后的solr-4.9.0的目录里面F:\tools\开发工具\Lucene\solr-4.9.0\contrib\analysis-extras\lucene-libs找到lucene- ...

随机推荐

  1. CSS3选择器:nth-child和:nth-of-type的差异

    p:nth-child(2)表示这个元素要是p标签,且是第二个子元素,是两个必须满足的条件. <section> <div>我是一个普通的div标签</div> & ...

  2. 一步一步理解线段树——转载自JustDoIT

    一步一步理解线段树   目录 一.概述 二.从一个例子理解线段树 创建线段树 线段树区间查询 单节点更新 区间更新 三.线段树实战 -------------------------- 一 概述 线段 ...

  3. [SCOI2009]windy数 代码 (对应数位dp入门)

    Code1 (DP版) #include<bits/stdc++.h> #define in(i) (i=read()) using namespace std; int read() { ...

  4. 深入理解 Java 线程池

    一.简介 什么是线程池 线程池是一种多线程处理形式,处理过程中将任务添加到队列,然后在创建线程后自动启动这些任务. 为什么要用线程池 如果并发请求数量很多,但每个线程执行的时间很短,就会出现频繁的创建 ...

  5. 总结了零基础学习Java编程语言的几个基础知识要点

    很多Java编程初学者在刚接触Java语言程序的时候,不知道该学习掌握哪些必要的基础知识.本文总结了零基础学习Java编程语言的几个基础知识要点. 1先了解什么是Java的四个方面   初学者先弄清这 ...

  6. oracle报错:The Network Adapter could not establish the connection的解决

    进入oracle安装目录\product\11.2.0\dbhome_1\NETWORK\ADMIN,修改listener.ora和tnsnames.ora,修改host 我的网络IP为192.168 ...

  7. scrapy_redis的使用

    配置Scrapy-Redis 配置Scrapy-Redis非常简单,只需要修改一下settings.py配置文件即可. 1. 核心配置 首先最主要的是,需要将调度器的类和去重的类替换为Scrapy-R ...

  8. linux升级安装openssh时出现依赖冲突

    通过如下方式下载到openssh安装包 https://www.cnblogs.com/qq931399960/p/11120429.html -rwxrwxrwx. root root Jul : ...

  9. 解决SpringCloud使用Feign跨服调用时header请求头中的信息丢失

    在使用SpringCloud进行Feign跨服调用时header请求头中的信息会丢失,是因为Feign是不会带上当前请求的Cookie信息和头信息的,这个时候就需要重写请求拦截. 1.需要重写Requ ...

  10. 【转】java导出多个excel表格,并压缩成zip输出

    转自:http://blog.csdn.net/qq_14861089/article/details/53169414    感谢作者分享 /** * 导出支付宝批量支付文件excel * * @p ...