天天躁日日躁狠狠躁AV麻豆-天天躁人人躁人人躁狂躁-天天澡夜夜澡人人澡-天天影视香色欲综合网-国产成人女人在线视频观看-国产成人女人视频在线观看

php權(quán)重計(jì)算方法代碼分享

復(fù)制代碼 代碼如下:
<?php
/* vim: set expandtab tabstop=4 shiftwidth=4: */
// +------------------------------------------------------------------------
//  Name       :   權(quán)重計(jì)算                                        
//  Description:   稍加修改,亦可用于分詞,詞頻統(tǒng)計(jì),全文檢索和垃圾檢測(cè)
//  Date       :   2013/12/16 08:51

class weight {
    protected $aDict = array(array());
    protected $aItems = array();
    protected $sLastRule;
    protected $aMatchs = array();
    protected $aShow = array();

 private function init() {
  //清空記錄的匹配表和輸出結(jié)果
  unset($this->aShow);
 }

    public function newItems($mItems) {
  //導(dǎo)入新的項(xiàng)目
  $this->aItems = (is_array($mItems))? $mItems: array($mItems);
  $this->init();
 }

 public function newTable(array $aTable) {
        //導(dǎo)入新的對(duì)照表,并生成字典
        foreach($aTable as $iTableKey=>$sTableLine) {
            $aTableLine = explode(',', str_replace('|', ',', $sTableLine));
            $setter = function($v, $k, $paraMeter) {
                $k1 = $paraMeter[0]; $oWeight = $paraMeter[1];
                $oWeight->genDict($v, $k1);
            };
            array_walk($aTableLine, $setter, array($iTableKey, $this));
        }
        $this->init();
 }

    public function getShow($sRule = 'max') {
  //獲取最終的顯示結(jié)果
        if(empty($this->aItems) || empty($this->aDict))
            return array();
  if (empty($this->aShow) || $sRule != $this->sLastRule)
            return $this->genShow($sRule);
        return $this->aShow;
 }

    public function genShow($sRule) {
        $aShow = array();
        $aMatchs = array();
  $getter = function($v, $k, $oWeight) use(&$aShow, &$aMatchs, $sRule) {
   $t = array_count_values($oWeight->matchWord($v));
            $aMatchs[] = $t;
            switch ($sRule) {
                case 'max':
                    $aShow[$k] = array_keys($t, max($t)); 
                    break;
            }
  };
  array_walk($this->aItems, $getter, $this);
  $this->aShow = $aShow;
  $this->aMatchs = $aMatchs;
  return $aShow;
    }

    private function genDict($mWord, $iKey = '') {
        $iInsertPonit = count($this->aDict);
        $iCur = 0; //當(dāng)前節(jié)點(diǎn)號(hào)
        foreach (str_split($mWord) as $iChar) {
            if (isset($this->aDict[$iCur][$iChar])) {
                $iCur = $this->aDict[$iCur][$iChar];
                continue;
            }
            $this->aDict[$iInsertPonit] = array();
            $this->aDict[$iCur][$iChar] = $iInsertPonit;
            $iCur = $iInsertPonit;
            $iInsertPonit++;
        }
        $this->aDict[$iCur]['acc'][] = $iKey;

    }

        function matchWord($sLine) {
            $iCur = $iOffset = $iPosition = 0;
            $sLine .= "/0";
            $iLen = strlen($sLine);
            $aReturn = array();
            while($iOffset < $iLen) {
                $sChar = $sLine{$iOffset};
                if(isset($this->aDict[$iCur][$sChar])) {
                    $iCur = $this->aDict[$iCur][$sChar];
                    if(isset($this->aDict[$iCur]['acc'])) {
                        $aReturn = array_merge($aReturn, $this->aDict[$iCur]['acc']);

                        $iPosition = $iOffset + 1;
                        $iCur = 0;
                    }
                } else {
                    $iCur = 0;
                    $iOffset = $iPosition;
                    $iPosition = $iOffset + 1;
                }
                ++$iOffset;
            }
            return $aReturn;
        }
}

?>

外部調(diào)用示例
復(fù)制代碼 代碼如下:
$aItems = array(
    'chinaisbig',
    'whichisnot',
    'totalyrightforme',
);
$aTable = array(
    'china,is|small',
    'china,big|me',
    'china,is|big,which|not,me',
    'totaly|right,for,me',
);

$oWeight = new ttrie;
$oWeight->newItems($aItems);
$aResult = $oWeight->newTable($aTable);

php技術(shù)php權(quán)重計(jì)算方法代碼分享,轉(zhuǎn)載需保留來(lái)源!

鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請(qǐng)第一時(shí)間聯(lián)系我們修改或刪除,多謝。

主站蜘蛛池模板: 暖暖在线观看播放视频 | 97人妻中文字幕免费视频 | 有码 亚洲 制服 国产 在线 | 国产36d在线观看 | 向日葵视频app下载18岁以下勿看 | 三级黄色在线视频中文 | 向日葵视频app下载18岁以下勿看 | 色综合精品无码一区二区三区 | 色多多污污在线观看网站 | 最近韩国HD免费观看国语 | 十九岁在线观看免费完整版电影 | 国产精品资源网站在线观看 | 乱色欧美激惰 | 少妇内射视频播放舔大片 | 久久re视频这里精品一本到99 | 久久99re8热在线播放 | 熟女人妻-蜜臀AV-首页 | 最新无码国产在线视频 | 男人和女人一起愁愁愁很痛 | 色久久综合视频本道88 | 久久是热频国产在线 | 伊人久久影院 | 热99re久久精品国产首页 | wwwzzz日本| 草莓视频在线免费观看 | 99国产精品白浆在线观看免费 | 992交通广播 | 久久精品无码一区二区日韩av | 国产亚洲精品线视频在线 | 九九夜夜妹子 | 龙泽罗拉av| 无止侵犯高H1V3无止侵犯 | 国产午夜在线精品三级a午夜电影 | x8国产精品视频 | 麻豆XXXX乱女少妇精品 | 寻找最美乡村教师颁奖晚会 | 亚洲视频成人 | 国产精品视频免费观看 | 亚洲AV久久久噜噜噜久久 | 最近中文字幕2018MV高清在线 | 亚洲日韩在线观看 |