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. 51 Nod 1636 教育改革(dp)

    1636 教育改革  题目来源: CodeForces 基准时间限制:1 秒 空间限制:131072 KB 分值: 20 难度:3级算法题  收藏  关注 最近A学校正在实施教育改革. 一个学年由n天 ...

  2. LA 4223 最短路 路径选择要求提高一点

    F - Trucking Time Limit:3000MS     Memory Limit:0KB     64bit IO Format:%lld & %llu Submit Statu ...

  3. Linux之zookeeper开机启动

    1.用cd 命令切换到/etc/rc.d/init.d/目录下 [root@bogon ~]# cd /etc/rc.d/init.d 2.用touch zookeeper创建一个文件 [root@b ...

  4. 【java】获取项目资源路径

    目资源路径分两种,一种是普通Java项目的资源路径,另一种是JavaEE项目的资源路径. 获取Java项目的包(源码下的包 或者 jar包)的资源路径 // 方法1:通过this.getClass() ...

  5. Alpha冲刺(3/6)

    队名:new game 组长博客:戳 作业博客:戳 组员情况 鲍子涵(队长) 燃尽图 过去两天完成了哪些任务 才两天,也就是实现一些功能而已 复习 接下来的计划 实现更多的功能 为下周的比赛准备 还剩 ...

  6. LeetCode 36. 有效的数独(Valid Sudoku)

    题目描述 判断一个 9x9 的数独是否有效.只需要根据以下规则,验证已经填入的数字是否有效即可. 数字 1-9 在每一行只能出现一次. 数字 1-9 在每一列只能出现一次. 数字 1-9 在每一个以粗 ...

  7. 关于OpenModelica的编译

    由于工作需要,最近对OpenModelica进行二次开发,由于国内资料也比较少,所以踩了一些坑,近期计划把OpenModelica的编译,msys,及OpenModelica里面比较关键的部分OMEd ...

  8. SpringBoot2.X&Prometheus使用

    1.启动Prometheus [root@ip101 prometheus-2.12.0.linux-amd64]# pwd /opt/app/prometheus-2.12.0.linux-amd6 ...

  9. Mysql的exist与in的区别

    如果查询的两个表大小相当,那么用in和exists差别不大. 如果两个表中一个较小,一个是大表,则子查询表大的用exists,子查询表小的用in:    例如:表A(小表),表B(大表)   1: s ...

  10. 排查python内存泄露中几个工具的使用

    本文主要介绍3个工具:pdb,objgraph,以及pympler. 1.pdb pdb是专门用于python代码调试,模仿gdb. 使用pdb可以查看堆栈,打印变量等. 这里介绍的是命令行下的pdb ...