Xunsearch PHP-SDK v1.3.2 API 参考文档

XSTokenizerScws

XS.tokenizer
继承关系 class XSTokenizerScws
实现接口 XSTokenizer
始于 1.3.1
版本 1.0.0
源代码 sdk/php/lib/XSTokenizer.class.php
SCWS - 分词器(与搜索服务端通讯)

Public 方法

隐去继承来的方法

名称描述定义于
__construct() 构造函数 XSTokenizerScws
getResult() 获取分词结果 XSTokenizerScws
getTokens() XSTokenizer 接口 XSTokenizerScws
getTops() 获取重要词统计结果 XSTokenizerScws
getVersion() 获取 scws 版本号 XSTokenizerScws
hasWord() 判断是否包含指定词性的词 XSTokenizerScws
setCharset() 设置字符集 XSTokenizerScws
setDuality() 设置散字二元组合 XSTokenizerScws
setIgnore() 设置忽略标点符号 XSTokenizerScws
setMulti() 设置复合分词选项 XSTokenizerScws

方法明细

__construct() 方法
public void __construct()
源码: sdk/php/lib/XSTokenizer.class.php#L186 (显示)
public function __construct()
{
    if (
self::$_server === null)
    {
        
$xs XS::getLastXS();
        if (
$xs === null)
            throw new 
XSException('An XS instance should be created before using ' __CLASS__);
        
self::$_server $xs->getScwsServer();
        
self::$_server->setTimeout(0);
        
$this->_charset $xs->getDefaultCharset();
        
// constants
        
if (!defined('SCWS_MULTI_NONE'))
        {
            
define('SCWS_MULTI_NONE'0);
            
define('SCWS_MULTI_SHORT'1);
            
define('SCWS_MULTI_DUALITY'2);
            
define('SCWS_MULTI_ZMAIN'4);
            
define('SCWS_MULTI_ZALL'8);
        }
    }
}

构造函数 初始化用于分词的搜索服务端

getResult() 方法
public array getResult(string $text)
$text string 待分词的文本
{return} array 返回词汇数组, 每个词汇是包含 [off:词在文本中的位置,attr:词性,word:词]
源码: sdk/php/lib/XSTokenizer.class.php#L294 (显示)
public function getResult($text)
{
    
$words = array();
    
$text $this->applySetting($text);
    
$cmd = new XSCommand(CMD_SEARCH_SCWS_GETCMD_SCWS_GET_RESULT0$text);
    
$res self::$_server->execCommand($cmdCMD_OK_SCWS_RESULT);
    while (
$res->buf !== '')
    {
        
$tmp unpack('Ioff/a4attr/a*word'$res->buf);
        
$tmp['word'] = XS::convert($tmp['word'], $this->_charset'UTF-8');
        
$words[] = $tmp;
        
$res self::$_server->getRespond();
    }
    return 
$words;
}

获取分词结果

getTokens() 方法
public void getTokens($value, $doc=NULL)
$value
$doc
源码: sdk/php/lib/XSTokenizer.class.php#L211 (显示)
public function getTokens($valueXSDocument $doc null)
{
    
$tokens = array();
    
$this->setIgnore(true);
    
// save charset, force to use UTF-8
    
$_charset $this->_charset;
    
$this->_charset 'UTF-8';
    
$words $this->getResult($value);
    foreach (
$words as $word)
    {
        
$tokens[] = $word['word'];
    }
    
// restore charset
    
$this->_charset $_charset;
    return 
$tokens;
}

XSTokenizer 接口

getTops() 方法
public array getTops(string $text, string $limit=10, $xattr='')
$text string 待分词的文本
$limit string 在返回结果的词性过滤, 多个词性之间用逗号分隔, 以~开头取反 如: 设为 n,v 表示只返回名词和动词; 设为 ~n,v 则表示返回名词和动词以外的其它词
$xattr
{return} array 返回词汇数组, 每个词汇是包含 [times:次数,attr:词性,word:词]
源码: sdk/php/lib/XSTokenizer.class.php#L317 (显示)
public function getTops($text$limit 10$xattr '')
{
    
$words = array();
    
$text $this->applySetting($text);
    
$cmd = new XSCommand(CMD_SEARCH_SCWS_GETCMD_SCWS_GET_TOPS$limit$text$xattr);
    
$res self::$_server->execCommand($cmdCMD_OK_SCWS_TOPS);
    while (
$res->buf !== '')
    {
        
$tmp unpack('Itimes/a4attr/a*word'$res->buf);
        
$tmp['word'] = XS::convert($tmp['word'], $this->_charset'UTF-8');
        
$words[] = $tmp;
        
$res self::$_server->getRespond();
    }
    return 
$words;
}

获取重要词统计结果

getVersion() 方法
public string getVersion()
{return} string 版本号
源码: sdk/php/lib/XSTokenizer.class.php#L282 (显示)
public function getVersion()
{
    
$cmd = new XSCommand(CMD_SEARCH_SCWS_GETCMD_SCWS_GET_VERSION);
    
$res self::$_server->execCommand($cmdCMD_OK_INFO);
    return 
$res->buf;
}

获取 scws 版本号

hasWord() 方法
public bool hasWord(string $text, string $xattr)
$text string 要判断的文本
$xattr string 要判断的词性, 参见 getTops 的说明
{return} bool 文本中是否包含指定词性的词汇
源码: sdk/php/lib/XSTokenizer.class.php#L339 (显示)
public function hasWord($text$xattr)
{
    
$text $this->applySetting($text);
    
$cmd = new XSCommand(CMD_SEARCH_SCWS_GETCMD_SCWS_HAS_WORD0$text$xattr);
    
$res self::$_server->execCommand($cmdCMD_OK_INFO);
    return 
$res->buf === 'OK';
}

判断是否包含指定词性的词

setCharset() 方法
public XSTokenizerScws setCharset(string $charset)
$charset string
{return} XSTokenizerScws 返回对象本身以支持串接操作
源码: sdk/php/lib/XSTokenizer.class.php#L234 (显示)
public function setCharset($charset)
{
    
$this->_charset strtoupper($charset);
    if (
$this->_charset == 'UTF8')
        
$this->_charset 'UTF-8';
    return 
$this;
}

设置字符集 默认字符集是 UTF-8, 这是指 getResult 系列函数的 $text 参数的字符集

setDuality() 方法
public XSTokenizerScws setDuality(bool $yes=true)
$yes bool 是否开启散字自动二分组合功能
{return} XSTokenizerScws 返回对象本身以支持串接操作
源码: sdk/php/lib/XSTokenizer.class.php#L272 (显示)
public function setDuality($yes true)
{
    
$this->_setting['duality'] = new XSCommand(CMD_SEARCH_SCWS_SETCMD_SCWS_SET_DUALITY$yes === false 1);
    return 
$this;
}

设置散字二元组合

setIgnore() 方法
public XSTokenizerScws setIgnore(bool $yes=true)
$yes bool 是否忽略
{return} XSTokenizerScws 返回对象本身以支持串接操作
源码: sdk/php/lib/XSTokenizer.class.php#L247 (显示)
public function setIgnore($yes true)
{
    
$this->_setting['ignore'] = new XSCommand(CMD_SEARCH_SCWS_SETCMD_SCWS_SET_IGNORE$yes === false 1);
    return 
$this;
}

设置忽略标点符号

setMulti() 方法
public XSTokenizerScws setMulti(int $mode=3)
$mode int 复合选项, 值范围 0~15 默认为值为 3, 可使用常量组合: SCWS_MULTI_SHORT|SCWS_MULTI_DUALITY|SCWS_MULTI_ZMAIN|SCWS_MULTI_ZALL
{return} XSTokenizerScws 返回对象本身以支持串接操作
源码: sdk/php/lib/XSTokenizer.class.php#L260 (显示)
public function setMulti($mode 3)
{
    
$mode intval($mode) & self::MULTI_MASK;
    
$this->_setting['multi'] = new XSCommand(CMD_SEARCH_SCWS_SETCMD_SCWS_SET_MULTI$mode);
    return 
$this;
}

设置复合分词选项

Copyright © 2008-2011 by 杭州云圣网络科技有限公司
All Rights Reserved.