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. ZOJ 2967计算几何+单调栈

    ZOJ - 2967Colorful Rainbows 题目大意:给你道彩虹,每条彩虹有两个属性,a斜率和b截距,也就是彩虹描述为y=ax+b的直线,并且不存在垂直的彩虹以及一样的彩虹.然后就说明,如 ...

  2. python 多线程实现循环打印 abc

    python 多线程实现循环打印 abc 好久没写过python了, 想自己实践一下把 非阻塞版 import threading import time def print_a(): global ...

  3. Sql Server 基本使用

    一.登录sql server数据库 1.若需要连接本机数据库服务器,服务器名可以采用“local”.“.”“本机Ip”. 2.在连接sql server 之前,确保sql server服务已经启动,如 ...

  4. php " ",0,'0',false ==判断

    今天项目中遇到的一个问题,举个栗子: if($_GET['is_has_idcard']==0 || $_GET['is_has_idcard']==1){ echo '这次我要上传身份证'; } i ...

  5. MyBatis 整合 Druid

    pom.xml 依赖 <?xml version="1.0" encoding="UTF-8"?> <project xmlns=" ...

  6. 解释HTTP中Get和Post。它们有什么区别,哪个使用时更加安全?

    Get和Post都是浏览器向网页服务器提交数据的方法. Get把要提交的数据编码在url中,比如/workinfo.jsp/mianshiti?key1=value1&key2=value2中 ...

  7. Tree 树形控件

    用清晰的层级结构展示信息,可展开或折叠. 基础用法 基础的树形结构展示. <el-tree :data="data" :props="defaultProps&qu ...

  8. eclipse svn is already locked解决方案

    转: eclipse svn is already locked解决方案 2017年05月15日 22:21:54 Aaron莫言 阅读数:5867   版权声明:本文为博主原创文章,未经博主允许不得 ...

  9. html 网页源码解析:bs4中BeautifulSoup

    from bs4 import BeautifulSoup result=requests.request("get","http://www.baidu.com&quo ...

  10. Python——PYQT:控件基本使用

    QtGui.QComboBox控件常用函数: .addItem(string) #添加字符串项到Item .addItems(list) #添加列表或元组元素到Item .clear() #清除所有I ...