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. ga

    https://developers.google.com/analytics/devguides/collection/gtagjs/events ga 添加事件示例: 在代码中指定您自己的值,就可 ...

  2. MessagePack Java 0.6.X List, Map 对象的序列化和反序列化

    为了序列化原生的容器对象例如  List 和 Map 对象,你必须使用 Template. Template 对象是 serializer 和 deserializer 的配对.例如,为了序列化一个  ...

  3. linux线程池thrmgr源码解析

    linux线程池thrmgr源码解析 1         thrmgr线程池的作用 thrmgr线程池的作用是提高程序的并发处理能力,在多CPU的服务器上运行程序,可以并发执行多个任务. 2      ...

  4. Python将函数放入模块

    函数可以将通用的代码封装起来,便于其他程序或者方法调用.将函数存放在文件中,这个文件被称为模块.将函数存储在独立的模块中,可与其他程序员共享这些文件而不是整个程序. fun.py def say_hi ...

  5. 卸载apache

    1.查看httpd相关软件包 rpm -qa|grep httpd 2.卸载命令, “rpm -e 软件或服务名” 如果出现类似“httpd >= 2.2.0 is needed by (ins ...

  6. Django之模型的高级用法

    from django.db import models class Publisher(models.Model): name = models.CharField(max_length=30) a ...

  7. Linux性能分析之上下文切换

    而在每个任务运行前,CPU 都需要知道任务从哪里加载.又从哪里开始运行,也就是说,需要系统事先帮它设置好 CPU 寄存器和程序计数器 CPU 寄存器,是 CPU 内置的容量小.但速度极快的内存.而程序 ...

  8. 深入理解红黑树及C++实现

    介绍 红黑树是一种特殊的平衡二叉树(AVL),可以保证在最坏的情况下,基本动态集合操作的时间复杂度为O(logn).因此,被广泛应用于企业级的开发中. 红黑树的性质 在一棵红黑树中,其每个结点上增加了 ...

  9. Selenium下Chrome配置

    地址:https://peter.sh/experiments/chromium-command-line-switches/ chrome_options.add_argument('--headl ...

  10. django 模板里面for循环和if常用的方法

    django 模板里面for循环常用的方法 {% for %} 允许我们在一个序列上迭代.与Python的for 语句的情形类似,循环语法是 for X in Y ,Y是要迭代的序列而X是在每一个特定 ...