中文字幕日韩一区二区_国产一区二区av_国产毛片av_久久久久国产一区_色婷婷电影_国产一区二区精品

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

復(fù)制代碼 代碼如下:
<?php
/* vim: set expandtab tabstop=4 shiftwidth=4: */
// +------------------------------------------------------------------------
//  Name       :   權(quán)重計算                                        
//  Description:   稍加修改,亦可用于分詞,詞頻統(tǒng)計,全文檢索和垃圾檢測
//  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)入新的項目
  $this->aItems = (is_array($mItems))? $mItems: array($mItems);
  $this->init();
 }

 public function newTable(array $aTable) {
        //導(dǎo)入新的對照表,并生成字典
        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; //當前節(jié)點號
        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)重計算方法代碼分享,轉(zhuǎn)載需保留來源!

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

主站蜘蛛池模板: 亚洲精品66 | 日韩在线中文字幕 | 国产精品一二区 | 99精品99久久久久久宅男 | 精品国产乱码久久久久久88av | 精品91av| 中文字幕亚洲一区二区va在线 | 香蕉视频91 | 亚洲天堂一区二区 | 久久久久国产一区二区三区四区 | 久久亚洲一区二区三区四区 | 日韩综合在线 | 日韩精品中文字幕在线 | 久久尤物免费一区二区三区 | 久久逼逼 | 国产精品伦一区二区三级视频 | 欧美午夜视频 | 中文字幕成人av | 国产精品国产精品国产专区不片 | 在线91| 国产精品久久久久久久久久久久午夜片 | 福利视频日韩 | 97在线超碰| 天天碰夜夜操 | 国产免费一区二区 | 日产久久 | 中文字幕免费观看 | 91精品国产91久久久久久最新 | 91一区二区三区在线观看 | 亚洲欧美中文日韩在线v日本 | 欧美亚州 | 波多野结衣电影一区 | 久久99这里只有精品 | 日韩一区二区三区在线 | 国产一级一级毛片 | 一级黄色毛片子 | 久久久免费 | 国产91久久久久久久免费 | 欧美亚州 | 国产偷录视频叫床高潮对白 | 中文字幕色站 |