導航:首頁 > 編程語言 > 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相關的資料

熱點內容
銀河v10驅動重編譯 瀏覽:889
電腦上文件夾右擊就會崩潰 瀏覽:689
右美維持演算法 瀏覽:938
php基礎編程教程pdf 瀏覽:219
穿越之命令與征服將軍 瀏覽:351
android廣播重復 瀏覽:832
像阿里雲一樣的伺服器 瀏覽:318
水冷空調有壓縮機嗎 瀏覽:478
訪問日本伺服器可以做什麼 瀏覽:432
bytejava詳解 瀏覽:448
androidjava7 瀏覽:384
伺服器在山洞裡為什麼還有油 瀏覽:886
天天基金app在哪裡下載 瀏覽:974
伺服器軟路由怎麼做 瀏覽:292
冰箱壓縮機出口 瀏覽:228
OPT最佳頁面置換演算法 瀏覽:644
網盤忘記解壓碼怎麼辦 瀏覽:853
文件加密看不到裡面的內容 瀏覽:654
程序員腦子里都想什麼 瀏覽:434
oppp手機信任app在哪裡設置 瀏覽:189