导航:首页 > 编程语言 > phpmmseg

phpmmseg

发布时间:2022-11-13 07:34:21

⑴ sphinx 和coreseek 有什么区别

然后重新运行aclocal和autoconf
aclocal && autoconf
最后再次运行automake
automake


然后继续mmseg的安装
./configure --prefix=/usr/local/mmseg
make && make install


如果make 报错
There is an easy fix when you get such messages as "X--tag=CXX: command not found".
Just type:
export echo=echo
And try again.


所以输入
export echo=echo
然后再次运行安装
make && make install


安装csft
./configure --prefix=/usr/local/coreseek --with-mysql=/usr/local/mysql --with-mmseg=/usr/local/mmseg --with-mmseg-includes=/usr/local/mmseg/include/mmseg/ --with-mmseg-libs=/usr/local/mmseg/lib/
make && make install
安装完毕后 注意 coreseek 中的配置文件也是csft.conf 而不是 sphinx.conf
cd /usr/local/coreseek/etc
cp sphinx.conf.dist csft.conf
vim csft.conf


有些配置改动如下其他配置内容如上文的sphinx.conf
在索引源中注释掉txt
index main{
#stopwords = G:datastopwords.txt
#wordforms =G:datawordforms.txt
#exceptions =/data/exceptions.txt
#charset_type = sbcs
#添加下面2行 意思是把中文分词加入到配置文件中
char_type = zh_cn.utf-8
charset_dictpath =/usr/local/mmseg/etc/ #你安装mmseg的目录
}


保存配置
建立索引
cd /usr/local/coreseek/bin
./indexer --all
./search 中文词缀


如何用php去使用sphinx
Sphinx集成到php程序中有两种方式


  1. Sphinx php 模块(这次我们选择使用的方式)

  2. 2.Sphinx api 类(位于coreseek源码包里的csft里的api文件夹里有一个sphinxapi.php,使用的时候包含这个php文件即可)


我们要使用sphinx需要做以下几件事:


  1. 首先要有数据

  2. 2.建立sphinx配置文件

  3. 3.生成索引

  4. 4,启动searchd 服务进程,并开启端口9312

  5. 5.用php客户程序去链接sphinx服务


/usr/local/coreseek/bin/searchd

启动进程命令 searchd
-c 指定配置文件
--stop 停止服务
--pidfile 显示指定pid文件
-p 指定端口(默认9312)
注意:这里启动的服务是searchd


使用php sphinx的模块
下载 sphinx-1.1.0.tgz


tar zvxf sphinx-1.1.0.tgz
cd sphinx-1.1.0
/usr/local/php/bin/phpize #用于生成一个configure的脚本
进入coreseek源码包的csft/api/libsphinxclent 目录下执行configure
./configure
make && make install
进入sphinx-1.1.0.gzt的源码包目录下 执行configure用于生成so 的shpinx模块
./configure --with-php-config=/usr/local/webserver/php/bin/php-config --with-sphinx
make && make install
安装成功后会有提示
Build complete.
Don't forget to run 'make test'.


Installing shared extensions: /usr/local/php/lib/php/extensions/no-debug-non-zts-20090626/ (这个目录是sphinx.so所在的目录)


然后我们编辑php的ini文件 在extension中加入
extension=sphinx.so


然后重启nginx和php的服务
最后打印一下phpinfo 查看sphinx是否开启成功
如果成功开启 就可以使用php手册里的sphinx的方法和代码了

⑵ php 一般使用什么中文分词扩展

Robbe是建立在Friso中文分词器上的一个高性能php中文分词扩展,除了提供了基本的分词函数以外,还提供一些编码转换函。
Robbe完整版本(PHP测试程序, 开发帮助文档, WinNT下php各版本的dll文件)下载:code.google.com/p/robbe

一. 关于Robbe:
robbe是建立在friso中文分词上的一个高性能php中文分词扩展。了解friso

1.目前最高版本:friso 1.6.0,【源码无需修改即可在各平台下编译运行】

2.mmseg四种过滤算法,分词准确率达到了98.41%。

3.详细功能,请访问friso官方首页:friso [code.google.com/p/friso]

二. Robbe分词速度:
测试环境:2.8GHZ/2G/Ubuntu

简单模式:3.1M/秒

复杂模式:1.4M/秒

(因为php中的大量字符串的复制,性能比friso有些下降)。

⑶ coreseek 安装完成后 怎么调用接口

然后重新运行aclocal和autoconf
aclocal && autoconf
最后再次运行automake
automake

然后继续mmseg的安装
./configure --prefix=/usr/local/mmseg
make && make install

如果make 报错
There is an easy fix when you get such messages as "X--tag=CXX: command not found".
Just type:
export echo=echo
And try again.

所以输入
export echo=echo
然后再次运行安装
make && make install

安装csft
./configure --prefix=/usr/local/coreseek --with-mysql=/usr/local/mysql --with-mmseg=/usr/local/mmseg --with-mmseg-includes=/usr/local/mmseg/include/mmseg/ --with-mmseg-libs=/usr/local/mmseg/lib/
make && make install
安装完毕后 注意 coreseek 中的配置文件也是csft.conf 而不是 sphinx.conf
cd /usr/local/coreseek/etc
cp sphinx.conf.dist csft.conf
vim csft.conf

有些配置改动如下其他配置内容如上文的sphinx.conf
在索引源中注释掉txt
index main{
#stopwords = G:\data\stopwords.txt
#wordforms =G:\data\wordforms.txt
#exceptions =/data/exceptions.txt
#charset_type = sbcs
#添加下面2行 意思是把中文分词加入到配置文件中
char_type = zh_cn.utf-8
charset_dictpath =/usr/local/mmseg/etc/ #你安装mmseg的目录
}

保存配置
建立索引
cd /usr/local/coreseek/bin
./indexer --all
./search 中文词缀

如何用php去使用sphinx
Sphinx集成到php程序中有两种方式
1.Sphinx php 模块(这次我们选择使用的方式)
2.Sphinx api 类(位于coreseek源码包里的csft里的api文件夹里有一个sphinxapi.php,使用的时候包含这个php文件即可)

我们要使用sphinx需要做以下几件事:
1.首先要有数据
2.建立sphinx配置文件
3.生成索引
4,启动searchd 服务进程,并开启端口9312
5.用php客户程序去链接sphinx服务

/usr/local/coreseek/bin/searchd
启动进程命令 searchd
-c 指定配置文件
--stop 停止服务
--pidfile 显示指定pid文件
-p 指定端口(默认9312)
注意:这里启动的服务是searchd

使用php sphinx的模块
下载 sphinx-1.1.0.tgz

tar zvxf sphinx-1.1.0.tgz
cd sphinx-1.1.0
/usr/local/php/bin/phpize #用于生成一个configure的脚本
进入coreseek源码包的csft/api/libsphinxclent 目录下执行configure
./configure
make && make install
进入sphinx-1.1.0.gzt的源码包目录下 执行configure用于生成so 的shpinx模块
./configure --with-php-config=/usr/local/webserver/php/bin/php-config --with-sphinx
make && make install
安装成功后会有提示
Build complete.
Don't forget to run 'make test'.

Installing shared extensions: /usr/local/php/lib/php/extensions/no-debug-non-zts-20090626/ (这个目录是sphinx.so所在的目录)

然后我们编辑php的ini文件 在extension中加入
extension=sphinx.so

然后重启nginx和php的服务
最后打印一下phpinfo 查看sphinx是否开启成功
如果成功开启 就可以使用php手册里的sphinx的方法和代码了

⑷ friso 怎样在mysql中使用

friso 怎样在mysql中使用
C/C++ code?

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41

#include "friso/friso.h"
#include "friso/friso_API.h"

friso_t friso;
friso_task_t task;

typedef friso_t(*pfun_friso_new_from_ifile)(string);
typedef friso_task_t(*pfun_friso_new_task)();
typedef void(*pfun_friso_set_text)(friso_task_t,string);
typedef friso_hits_t(*pfun_friso_next)(friso_t,friso_mode_t,friso_task_t);
typedef void(*pfun_friso_free_task)(friso_task_t);
typedef void(*pfun_friso_free)(friso_t);

HINSTANCE hdll = LoadLibrary("friso\\friso.dll");
pfun_friso_new_from_ifile newfriso = (pfun_friso_new_from_ifile)GetProcAddress(hdll,"friso_new_from_ifile");
pfun_friso_new_task newtask = (pfun_friso_new_task)GetProcAddress(hdll,"friso_new_task");
pfun_friso_set_text frisosettext = (pfun_friso_set_text)GetProcAddress(hdll,"friso_set_text");
pfun_friso_next frisonext = (pfun_friso_next)GetProcAddress(hdll,"friso_next");
pfun_friso_free_task freetask = (pfun_friso_free_task)GetProcAddress(hdll,"friso_free_task");
pfun_friso_free freefriso = (pfun_friso_free)GetProcAddress(hdll,"friso_free");

LPSTR ini = "friso\\friso.ini";
friso = newfriso(ini);
task = newtask();
LPSTR txt = "测试:friso是使用c语言开发的一个中文分词器,使用流行的mmseg算法实现。完全基于模块化设计和实现,可以很方便的植入到其他程序中,例如:MySQL,PHP等。 ";
frisosettext(task,txt);

while((frisonext(friso,friso->mode,task))!=NULL)
{
OutputDebugString(task->hits->word);//第一次的输出竟然不是“测试”而是“friso”
OutputDebugString(" ");
if(task->hits->type==__FRISO_NEW_WORDS__)
{
//第一次运行到这里就除错
//错误提示:HEAP[fenci.exe]: Invalid Address specified to RtlValidateHeap( 00030000, 003954D0 )
FRISO_FREE(task->hits->word);
}
}
OutputDebugString("\r\n");
freetask(task);
freefriso(friso);

⑸ mmseg 怎么应用在php上

你这样试试呢usr/local/mmseg/include/mmseg/ --with-mmseg-libs=/usr/local/mmseg/lib/ 如何用php去使用sphinx Sphinx集成到php程序中有两种方式 Sphinx php你也可以去后盾人看看php基础教学视频看看,也是不错的选择,希望能帮到你,给个采纳吧谢谢

⑹ 如何使用织梦DedeCMS v5.7全文检索说明

1.1.开始前的准备工作
先从http://www.coreseek.cn/procts/ft_down/下载Coreseek 3.2.13,这里我们就以Windows环境为例:
下载后直接解压coreseek-3.2.13-win32.zip,我们这里假设解压到:D:\coreseek-3.2.13-win32.这里我们需要简单了解几个目录:

[D:\coreseek-3.2.13-win32\api]API接口目录,其中包括了php,python,ruby等操作实例,其中test_coreseek.php是一个不错的中文检索的例子.

[D:\****\bin]应用程序目录,其中包含以下几个文件
* indexer: 用于创建全文索引;
* search: 一个简单的命令行(CLI) 的测试程序,用于测试全文索引;
* searchd: 一个守护进程,其他软件可以通过这个守护进程进行全文检索;
* sphinxapi: 一系列searchd 的客户端API 库,用于流行的Web脚本开发语言(PHP, Python, Perl, Ruby, java).
* spellmp: 一个简单的命令行工具,用于从 ispell 或 MySpell (OpenOffice内置绑定) 格式的字典中提取词条。当使用 wordforms 时可用这些词条对索引进行定制.
* indextool: 工具程序,用来转储关于索引的多项调试信息。 此工具是从版本Coreseek 3.1(Sphinx 0.9.9-rc2)开始加入的。
* mmseg: 工具程序和库,Coreseek用于提供中文分词和词典处理。

[D:\****\etc]sphinx配置目录
[D:\****\var]sphinx变量&索引&日志存放目录

1.2.创建配置文件
由于dedecms使用的是mysql,所以我们需要来配置一个mysql的sphinx模板配置,可以复制csft_mysql.conf改名为:csft_dedecmsv57.conf,例如我们这里仅做文章的全文检索,我们需要做如下配置:
先在DedeCMS中创建一个统计表,方法可以在DedeCMS后台[系统]->[SQL命令行工具]中执行下列代码:
CREATE TABLE `dede_sphinx` (
`countid` int(11) unsigned NOT NULL,
`maxaid` int(11) unsigned NOT NULL,
PRIMARY KEY (`countid`)
) ENGINE=MyISAM DEFAULT CHARSET=gbk
这是一个sphinx内容统计表,为了适合数据量较大的情况下分批生成索引而使用的.
创建完数据表后,我们对sphinx的配置文件,即csft_dedecmsv57.conf修改,内容如下,其中包含注释:
--------------------------------------------------------------------------------------------

#源定义
source mysql
{
type = mysql

# 数据库服务器基本配置信息
sql_host = 192.168.0.103
sql_user = dedev57
sql_pass = dedecms
sql_db = dedecmsv57gbk
sql_port = 3306

# 设定编码,这里我们是gbk编码,如果是utf-8,可以设置:
# sql_query_pre = SET NAMES utf8
sql_query_pre = SET NAMES gbk

# 数据检索增量
sql_range_step = 1000

#当前最新文档id数
sql_query_pre = REPLACE INTO dede_sphinx SELECT 1, MAX(id) FROM dede_archives

#检索条件
sql_query = SELECT ARC.id,ARC.typeid,ARC.typeid2,ARC.sortrank,ARC.flag,ARC.channel,ARC.ismake,ARC.arcrank,ARC.click,ARC.title,ARC.shorttitle,ARC.color,ARC.writer,ARC.source,ARC.litpic,ARC.pubdate,ARC.senddate,ARC.mtype,ARC.description,ARC.badpost,ARC.goodpost,ARC.scores,ARC.lastpost,ARC.keywords,ARC.mid,ART.body FROM dede_archives AS ARC LEFT JOIN dede_addonarticle AS ART ON ARC.id = ART.aid WHERE ARC.id>=$start AND ARC.id<=$end #sql_query第一列id需为整数
#title、body作为字符串/文本字段,被全文索引http://www.dede58.com/a/dedeaz/1678.html

⑺ 如何查看coreseek的版本

然后重新运行aclocal和autoconf

aclocal && autoconf

最后再次运行automake

automake


然后继续mmseg的安装

./configure --prefix=/usr/local/mmseg

make && make install


如果make 报错

There is an easy fix when you get such messages as "X--tag=CXX: command not found".

Just type:

export echo=echo

And try again.


所以输入

export echo=echo

然后再次运行安装

make && make install


安装csft

./configure --prefix=/usr/local/coreseek --with-mysql=/usr/local/mysql --with-mmseg=/usr/local/mmseg --with-mmseg-includes=/usr/local/mmseg/include/mmseg/ --with-mmseg-libs=/usr/local/mmseg/lib/

make && make install

安装完毕后 注意 coreseek 中的配置文件也是csft.conf 而不是 sphinx.conf

cd /usr/local/coreseek/etc

cp sphinx.conf.dist csft.conf

vim csft.conf


有些配置改动如下其他配置内容如上文的sphinx.conf

在索引源中注释掉txt

index main{

#stopwords = G:datastopwords.txt

#wordforms =G:datawordforms.txt

#exceptions =/data/exceptions.txt

#charset_type = sbcs

#添加下面2行 意思是把中文分词加入到配置文件中

char_type = zh_cn.utf-8

charset_dictpath =/usr/local/mmseg/etc/ #你安装mmseg的目录

}


保存配置

建立索引

cd /usr/local/coreseek/bin

./indexer --all

./search 中文词缀


如何用php去使用sphinx

Sphinx集成到php程序中有两种方式

  1. Sphinx php 模块(这次我们选择使用的方式)

  2. 2.Sphinx api 类(位于coreseek源码包里的csft里的api文件夹里有一个sphinxapi.php,使用的时候包含这个php文件即可)

我们要使用sphinx需要做以下几件事:

  1. 首先要有数据

  2. 2.建立sphinx配置文件

  3. 3.生成索引

  4. 4,启动searchd 服务进程,并开启端口9312

  5. 5.用php客户程序去链接sphinx服务

/usr/local/coreseek/bin/searchd

启动进程命令 searchd

-c 指定配置文件

--stop 停止服务

--pidfile 显示指定pid文件

-p 指定端口(默认9312)

注意:这里启动的服务是searchd


使用php sphinx的模块

下载 sphinx-1.1.0.tgz


tar zvxf sphinx-1.1.0.tgz

cd sphinx-1.1.0

/usr/local/php/bin/phpize #用于生成一个configure的脚本

进入coreseek源码包的csft/api/libsphinxclent 目录下执行configure

./configure

make && make install

进入sphinx-1.1.0.gzt的源码包目录下 执行configure用于生成so 的shpinx模块

./configure --with-php-config=/usr/local/webserver/php/bin/php-config --with-sphinx

make && make install

安装成功后会有提示

Build complete.

Don't forget to run 'make test'.


Installing shared extensions: /usr/local/php/lib/php/extensions/no-debug-non-zts-20090626/ (这个目录是sphinx.so所在的目录)


然后我们编辑php的ini文件 在extension中加入

extension=sphinx.so


然后重启nginx和php的服务

最后打印一下phpinfo 查看sphinx是否开启成功

如果成功开启 就可以使用php手册里的sphinx的方法和代码了

⑻ 在thinkphp下怎么使用coreseek

首先我们把coreseek下载好,命名为coreseek,我们找到coreseek/etc中的csft_mysql.conf修改这个配置文件。
#源定义
source lemai
{
type = mysql

sql_host = localhost
sql_user = root
sql_pass = 123
sql_db = lemai
sql_port = 3306
sql_query_pre = SET NAMES utf8

sql_query = SELECT id, title,content,name FROM shop
#sql_query第一列id需为整数
#title、content作为字符串/文本字段,被全文索引
sql_attr_uint = sid #从SQL读取到的值必须为整数
sql_attr_timestamp = time #从SQL读取到的值必须为整数,作为时间属性

sql_query_info_pre = SET NAMES utf8 #命令行查询时,设置正确的字符集
sql_query_info = SELECT * FROM shop WHERE name=$id #命令行查询时,从数据库读取原始数据信息
}

#index定义
index lemai
{
source = lemai #对应的source名称
path = var/data/mysql #请修改为实际使用的绝对路径,例如:/usr/local/coreseek/var/...
docinfo = extern
mlock = 0
morphology = none
min_word_len = 1
html_strip = 0

#中文分词配置,详情请查看:http://www.coreseek.cn/procts-install/coreseek_mmseg/
#charset_dictpath = /usr/local/mmseg3/etc/ #BSD、linux环境下设置,/符号结尾
charset_dictpath = C:/AppServ/www/thinkphp/ThinkPHP/Extend/Vendor/Coreseek/etc/ #Windows环境下设置,/符号结尾,最好给出绝对路径,例如:C:/usr/local/coreseek/etc/...
charset_type = zh_cn.utf-8
#charset_table =
ngram_len = 0
}

#全局index定义
indexer
{
mem_limit = 128M
}

#searchd服务定义
searchd
{
listen = 9312
read_timeout = 5
max_children = 30
max_matches = 1000
seamless_rotate = 0
preopen_indexes = 0
unlink_old = 1
pid_file = var/log/searchd_mysql.pid #请修改为实际使用的绝对路径,例如:/usr/local/coreseek/var/...
log = var/log/searchd_mysql.log #请修改为实际使用的绝对路径,例如:/usr/local/coreseek/var/...
query_log = var/log/query_mysql.log #请修改为实际使用的绝对路径,例如:/usr/local/coreseek/var/...
}

然后把coreseek拷贝一份到thinkphp的核心文件Extend/Vendor下.
打开cmd cd到coreseek

bin\indexer -c etc\csft_mysql.conf (mysql,等)数据库名 创建索引
创建完之后我们可以在var\data下看到一堆文件,此时说明创建成功

bin\searchd -c etc\csft_mysql.conf --console 启动进程
(检查端口9312是否有这个进程,有就OK)

命令行查询
echo 一号店 |iconv -f gbk -t utf-8 | search -c etc\csft_mysql.conf --stdin | iconv -f utf-8 -t gbk 中文索引查询
然后就可以在控制器中进行PHP连接sphinxapi进行测试了

Vendor('Coreseek.api.sphinxapi');
//加载第三方扩展包的文件 文件名不包含class

$db = new PDO('mysql:host=localhost;port=3306;dbname=lemai', 'root', '123', array( PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES UTF8'));
//实例化PDO

$spx = new SphinxClient();
//实例化SphinxClient

$spx -> SetServer('127.0.0.1',9312);
$spx->SetConnectTimeout ( 3 );
$spx->SetArrayResult ( true );
$spx -> SetMatchMode(SPH_MATCH_ANY);
$result = $spx -> query('1','*');
$ids = join(",",array_keys($result['matches']));
$sql = "SELECT * FROM shop where id in ({$ids})";
$stmt = $db->query($sql);
$r = $stmt->FETCHALL(PDO::FETCH_ASSOC);
echo "<pre>";
var_mp($r);

以下是我的实例代码 包括sphinx分页

class IndexAction extends Action {
public function index(){
header("Content-type:text/html;charset=utf-8");
//设置字符集

$keyword = $_GET['kw'];
Vendor('Coreseek.api.sphinxapi');
//加载第三方扩展包的文件 文件名不包含class
$db = M();
$spx = new SphinxClient();
//实例化SphinxClient

$spx -> SetServer('127.0.0.1',9312);
//设置ip和端口

$spx->SetConnectTimeout ( 3 );
//设置超时时间

$spx->SetArrayResult ( true );
if(strlen($keyword)>=18){
$spx -> SetMatchMode(SPH_MATCH_ALL);//如果用户查询字符大于=18个匹配有查询词
}else{
$spx -> SetMatchMode(SPH_MATCH_ANY);//匹配查询词中的任意一个
}
//------
$limit = 12;//每页要显示的数量
$page = $_GET['page']>1 ? $_GET['page'] : 1;
//GET值不为1 则按1算

//$spx->setLimits(0,12);
$off = ($page-1)*$limit;
$spx->SetLimits( $off, $limit);
//设置分页

$result = $spx -> query("{$keyword}",'*');

/*
* 取出matches中的id,组成字符串
*/
$str = '';
foreach($result['matches'] as $rrs){
$str.=$rrs['id'].',';
}
$ids = rtrim($str,',');

//操作数据库
$sql = "SELECT * FROM shop where id in ({$ids})";
$stmt = $db->query($sql);

$opts = array(
"before_match"=>"<span style='color:red'>",//添加样式
"after_match"=>"</span>"
);
foreach($stmt as $st){
$shop_all[] = $spx->buildExcerpts($st,'lemai',$keyword,$opts);
}

$num = $result['total'];
$count =ceil($result['total']/12);//查出sphinx搜索总数 得出该关键词分页数
$pagenum = $_GET['page']>1?$_GET['page']:1;

$this->assign('pagenum',$pagenum);
$this->assign('num',$num);
$this->assign('count',$count);
$this->assign('shop_all',$shop_all);
$this->assign('keyword',$keyword);
$this->display("seek");
}
}

⑼ 中文分词的常见项目

功能性能 功能描述:1.新词自动识别
对词典中不存在的词,可以自动识别,对词典的依赖较小;
2.词性输出
分词结果中带有丰富的词性;
3.动态词性输出
分词结果中的词性并非固定,会根据不同的语境,赋予不同的词性;
4.特殊词识别
比如化学、药品等行业词汇,地名、品牌、媒体名等;
5.智能歧义解决
根据内部规则,智能解决常见分词歧义问题;
6.多种编码识别
自动识别各种单一编码,并支持混合编码;
7.数词量词优化
自动识别数量词; 性能介绍:处理器:AMD Athlon II x2 250 3GHZ
单线程大于833KB/s,多线程安全。 一个PHP函数实现中文分词。使分词更容易,使用如下图:
Paoding(庖丁解牛分词)基于Java的开源中文分词组件,提供lucene和solr 接口,具有极 高效率和 高扩展性。引入隐喻,采用完全的面向对象设计,构思先进。
高效率:在PIII 1G内存个人机器上,1秒可准确分词 100万汉字。
采用基于 不限制个数的词典文件对文章进行有效切分,使能够将对词汇分类定义。
能够对未知的词汇进行合理解析。
仅支持Java语言。 MMSEG4J基于Java的开源中文分词组件,提供lucene和solr 接口:
1.mmseg4j 用 Chih-Hao Tsai 的 MMSeg 算法实现的中文分词器,并实现 lucene 的 analyzer 和 solr 的TokenizerFactory 以方便在Lucene和Solr中使用。
2.MMSeg 算法有两种分词方法:Simple和Complex,都是基于正向最大匹配。Complex 加了四个规则过虑。官方说:词语的正确识别率达到了 98.41%。mmseg4j 已经实现了这两种分词算法。 盘古分词是一个基于.net 平台的开源中文分词组件,提供lucene(.net 版本) 和HubbleDotNet的接口
高效:Core Duo 1.8 GHz 下单线程 分词速度为 390K 字符每秒
准确:盘古分词采用字典和统计结合的分词算法,分词准确率较高。
功能:盘古分词提供中文人名识别,简繁混合分词,多元分词,英文词根化,强制一元分词,词频优先分词,停用词过滤,英文专名提取等一系列功能。 jcseg是使用Java开发的一个中文分词器,使用流行的mmseg算法实现。
1。mmseg四种过滤算法,分词准确率达到了98.4%以上。
2。支持自定义词库。在lexicon文件夹下,可以随便添加/删除/更改词库和词库内容,并且对词库进行了分类,词库整合了《现代汉语词典》和cc-cedict辞典。
3。词条拼音和同义词支持,jcseg为所有词条标注了拼音,并且词条可以添加同义词集合,jcseg会自动将拼音和同义词加入到分词结果中。
4。中文数字和分数识别,例如:"四五十个人都来了,三十分之一。"中的"四五十"和"三十分之一",并且jcseg会自动将其转换为对应的阿拉伯数字。
5。支持中英混合词的识别。例如:B超,x射线。
6。支持基本单字单位的识别,例如2012年。
7。良好的英文支持,自动识别电子邮件,网址,分数,小数,百分数……。
8。智能圆角半角转换处理。
9。特殊字母识别:例如:Ⅰ,Ⅱ
10。特殊数字识别:例如:①,⑩
11。配对标点内容提取:例如:最好的Java书《java编程思想》,‘畅想杯黑客技术大赛’,被《,‘,“,‘标点标记的内容。
12。智能中文人名识别。中文人名识别正确率达94%以上。
jcseg佩带了jcseg.properties配置文档,使用文本编辑器就可以自主的编辑其选项,配置适合不同应用场合的分词应用。例如:最大匹配分词数,是否开启中文人名识别,是否载入词条拼音,是否载入词条同义词……。 friso是使用c语言开发的一个中文分词器,使用流行的mmseg算法实现。完全基于模块化设计和实现,可以很方便的植入到其他程序中,例如:MySQL,PHP等。并且提供了一个php中文分词扩展robbe。
1。只支持UTF-8编码。【源码无需修改就能在各种平台下编译使用,加载完20万的词条,内存占用稳定为14M。】。
2。mmseg四种过滤算法,分词准确率达到了98.41%。
3。支持自定义词库。在dict文件夹下,可以随便添加/删除/更改词库和词库词条,并且对词库进行了分类。
4。词库使用了friso的Java版本jcseg的简化词库。
5。支持中英混合词的识别。例如:c语言,IC卡。
7。很好的英文支持,电子邮件,网址,小数,分数,百分数。
8。支持阿拉伯数字基本单字单位的识别,例如2012年,5吨,120斤。
9。自动英文圆角/半角,大写/小写转换。
并且具有很高的分词速度:简单模式:3.7M/秒,复杂模式:1.8M/秒。

⑽ coreseek3.2 php 怎样更新索引

php是无法更新coreseek 的索引的,需要使用coreseek的语法,配合定时任务来自动更新索引。

这个写起来很麻烦,我们的系统正好用了 coreseek ,说一下我的思路吧。

1、首先建立一个 search 表,这个表用来存你要进行搜索的、经过分词的数据,分词系统你们自己选,我使用的是php的pscws4中文分词。

DROPTABLEIFEXISTS`search`;
CREATETABLE`search`(
`searchid`int(11)NOTNULLAUTO_INCREMENT,
`title`varchar(255)NOTNULL,
`content`textNOTNULL,
`add_time`int(11)NOTNULL,
PRIMARYKEY(`searchid`)
)ENGINE=MyISAMAUTO_INCREMENT=15209DEFAULTCHARSET=utf8;

2、还需要一个 索引计数表search_counter,这个表用来存放每次索引更新后的最大一个ID,下次更新索引的时候,就不需要从头更新了,只需要比这个ID大的就可以。

DROPTABLEIFEXISTS`search_counter`;
CREATETABLE`search_counter`(
`counter_id`int(11)NOTNULL,
`max_doc_id`int(11)NOTNULL,
PRIMARYKEY(`counter_id`)
)ENGINE=InnoDBDEFAULTCHARSET=utf8;

3、配置coreseek ,以下是我在windows下coreseek的配置文件,linux 在服务器上,没去找。这里配置了2个索引源,一个是main,一个是增量索引delta,这样不需要每次重建所有索引,只需要合并main和delta就可以了。


#源定义
sourcemain
{
type=mysql

sql_host=192.168.0.10
sql_user=root
sql_pass=root
sql_db=database
sql_port=3306
sql_query_pre=SETNAMESutf8
sql_query_pre=REPLACEINTOsearch_counterSELECT1,MAX(searchid)FROMqhb_search
sql_query=SELECTsearchid,title,content,controller_id,controller,add_timeFROMsearch
#sql_query第一列id需为整数
#title、content作为字符串/文本字段,被全文索引
#sql_attr_uint=searchid#从SQL读取到的值必须为整数
sql_attr_uint=controller_id#数据库ID过滤
sql_attr_uint=controller#控制器过滤
sql_attr_timestamp=add_time#从SQL读取到的值必须为整数,作为时间属性

sql_query_info_pre=SETNAMESutf8#命令行查询时,设置正确的字符集
#sql_query_info=SELECT*FROMqhb_searchWHEREsearchid=$searchid#命令行查询时,从数据库读取原始数据信息
}

sourcedelta:main

{

sql_query_pre=SETNAMESutf8
sql_query=SELECTsearchid,title,content,controller_id,controller,add_timeFROMqhb_searchWHEREsearchid>(SELECTmax_doc_idFROMqhb_search_counterWHEREcounter_id=1)

sql_query_post=REPLACEINTOqhb_search_counterSELECT1,MAX(searchid)FROMqhb_search

}

#index定义

indexmain
{
source=main#对应的source名称
path=D:/WebSoft/coreseek/var/data/main#请修改为实际使用的绝对路径,例如:/usr/local/coreseek/var/...
docinfo=extern
mlock=0
morphology=none
min_word_len=1
html_strip=0

#中文分词配置,详情请查看:http://www.coreseek.cn/procts-install/coreseek_mmseg/
#charset_dictpath=/usr/local/mmseg3/etc/#BSD、Linux环境下设置,/符号结尾
charset_dictpath=D:/WebSoft/coreseek/etc/#Windows环境下设置,/符号结尾,最好给出绝对路径,例如:C:/usr/local/coreseek/etc/...
charset_type=zh_cn.utf-8
}

indexdelta:main

{
source=delta
path=D:/WebSoft/coreseek/var/data/delta

}


#全局index定义
indexer
{
mem_limit=128M
}

#searchd服务定义
searchd
{
listen=9312
read_timeout=5
max_children=30
max_matches=1000
seamless_rotate=0
preopen_indexes=0
unlink_old=1
pid_file=D:/WebSoft/coreseek/var/log/searchd_main.pid#请修改为实际使用的绝对路径,例如:/usr/local/coreseek/var/...
log=D:/WebSoft/coreseek/var/log/searchd_main.log#请修改为实际使用的绝对路径,例如:/usr/local/coreseek/var/...
query_log=D:/WebSoft/coreseek/var/log/query_main.log#请修改为实际使用的绝对路径,例如:/usr/local/coreseek/var/...
}

4、建立索引。必须要先建立索引,coreseek 才能启动。下面是我在Windows的建立索引命令,如何使用命令行我就不赘述了。

D:WebSoftcoreseekinindexer--all--configd:WebSoftcoreseekinsphinx.conf

5、配置并启动服务

D:WebSoftcoreseekinsearchd--install--config
D:WebSoftcoreseekinsphinx.conf--servicenamecoreseek

6、Windows创建定时任务,每分钟更新一次索引



D:WebSoftcoreseekinindexer.exe--configD:WebSoftcoreseekinsphinx.confdelta--rotate
echoindexing,windowwillclosewhencomplete

7、Windows创建定时任务,每天凌晨2点合并索引



D:WebSoftcoreseekinindexer.exe--configD:WebSoftcoreseekinsphinx.conf--mergemaindelta--rotate
echoindexing,windowwillclosewhencomplete

8、附上 创建索引,重建索引,合并索引在windows及linux上的方法,以及一些使用上的小问题

windows:
建立索引

D:WebSoftcoreseekinindexer--all--configd:WebSoftcoreseekinsphinx.conf

重建索引
D:WebSoftcoreseekinindexer--configD:WebSoftcoreseekinsphinx.confmain--rotate

增量索引
D:WebSoftcoreseekinindexer--configD:WebSoftcoreseekinsphinx.confdelta--rotate

合并索引

D:WebSoftcoreseekinindexer--configD:WebSoftcoreseekinsphinx.conf--mergemaindelta--rotate


配置并启动服务
D:WebSoftcoreseekinsearchd--install--configD:WebSoftcoreseekinsphinx.conf--servicenamecoreseek创建自定义词库方法:

1、先去http://pinyin.sogou.com/dict/搜狗细胞词库下载需要的词库
2、使用深蓝词库转换将词库转换为txt
3、使用PHP程序将生成的txt转换为coreseek所需要的格式
4、附加到unigram.txt
5、使用命令更新分词词库
cmd进入bin目录,执行下面命令
mmseg-uD:WebSoftcoreseeketcunigram.txt
6、将生成的unigram.txt.uni改名为:uni.lib
7、重建索引
8、重启coreseek服务注意:

必须先建立索引,服务才能启动

1、coreseek索引或者查询时提示ERROR:invalidtokeninetc解决办法

该提示表示当前的配置文件的编码不是UTF-8(无BOM头)格式,无法正确解析,请使用编辑软件打开配置文件,另存为UTF-8(无BOM头)格式;

2、failedtolock.....try--rotate

索引已经建立,使用重建索引命令


3、报警告:failedtoscanfpidfrom

没有启动coreseek服务

4、过滤搜索结果,必须使用数组传递,只支持


无符号整数(1-32位宽);
UNIX时间戳(timestamps);
浮点值(32位,IEEE754单精度);
字符串序列(尤其是计算出的整数值);
多值属性MVA(multi-valueattributes)(32位无符号整型值的变长序列)

$this->shpinx->SetFilter('controller',array(1,2));


CENTOS操作方法

开机启动coreseek搜索服务:
vi/etc/rc.d/rc.local
在最后一行添加
/usr/local/coreseek/bin/searchd-c/usr/local/coreseek/bin/sphinx.conf


##如要停止搜索服务,请使用/usr/local/coreseek/bin/searchd-c/usr/local/coreseek/bin/sphinx.conf--stop
##如要已启动服务,要更新索引,请使用/usr/local/coreseek/bin/indexer-c/usr/local/coreseek/bin/sphinx.conf--all--rotate

linux下编辑定时任务crontab-e

#凌晨4点合并索引,其余时间每分钟更新索引
*0-3***/usr/local/sphinx/bin/indexer--config/usr/local/sphinx/etc/sphinx.confdelta--rotate
*6-23***/usr/local/sphinx/bin/indexer--config/usr/local/sphinx/etc/sphinx.confdelta--rotate
04***/usr/local/sphinx/bin/indexer--config/usr/local/sphinx/etc/sphinx.conf--mergemaindelta--rotate


启动服务:
/usr/local/coreseek/bin/searchd-c/usr/local/coreseek/bin/sphinx.conf


建立索引
/usr/local/coreseek/bin/indexer--all--config/usr/local/coreseek/bin/sphinx.conf


重建索引
/usr/local/coreseek/bin/indexer--config/usr/local/coreseek/bin/sphinx.confmain--rotate


增量索引
/usr/local/coreseek/bin/indexer--config/usr/local/coreseek/bin/sphinx.confdelta--rotate

合并索引

/usr/local/coreseek/bin/indexer--config/usr/local/coreseek/bin/sphinx.conf--mergemaindelta--rotate
阅读全文

与phpmmseg相关的资料

热点内容
哪种加密算法是非对称算法 浏览:989
多文件夹加序号 浏览:844
编译程序包含汇编程序吗 浏览:895
游戏源码搭建一条龙 浏览:192
宋金pdf 浏览:807
服务器为什么需要内存池 浏览:526
php与jquery开发实例 浏览:289
编程大世界故事漫画 浏览:983
北漂程序员出车祸 浏览:914
亚马逊为什么用云端服务器 浏览:65
程序员审核职位 浏览:385
德龙空调压缩机 浏览:780
红旗app如何注册新账户 浏览:360
惯导pdf 浏览:606
c程序员的平均工资 浏览:58
微小店源码 浏览:801
编译原理答题题库 浏览:169
ubuntu编程入门 浏览:301
antbuild命令 浏览:771
怎么订阅服务器 浏览:593