手把手教你做關鍵詞匹配項目(搜尋引擎)---- 第二十二天,教你做第二十二天_PHP教程

來源:互聯網
上載者:User

手把手教你做關鍵詞匹配項目(搜尋引擎)---- 第二十二天,教你做第二十二天


最新面試經曆:面試的感觸(二)、面試的感觸

最新的架構:高並發資料擷取的架構應用(Redis的應用)

吐槽:今天也是剛把心態調整好,繼續寫以前沒有完成的文章,最近幾個月自己也是休整了一段時間,回家做苦力,也當作是鍛煉鍛煉自己的身體,畢竟任何東西都換不回你的健康,我也是建議做IT行業的帥哥們多活動活動你們其它的部位。

第二十二天

起點:手把手教你做關鍵詞匹配項目(搜尋引擎)---- 第一天

回顧:手把手教你做關鍵詞匹配項目(搜尋引擎)---- 第二十一天

小帥帥是樂於做總結的人,根據以前所學的知識他總結了如下:

1. 寶貝屬性的擴充和類型的問題初步已經得到很好的控制了,不過要推廣和運營維護還是遇到了很大的障礙。

2. 對關鍵詞的拆分使用了scws擴充以及自己原生的業務拆詞方案,拆詞有效解決了片語方面的匹配難度。

3. 所有的初始工作好像已經完成了,只需要最後的整理項目應該可以正式運行起來了。

小帥帥的主動意識比較強烈,他沒有去問於老大,就自己動手寫了份代碼,該代碼主要是為了把所有的步驟串連起來。

寶貝屬性的擴充CharList的構建請參照:手把手教你做關鍵詞匹配項目(搜尋引擎)---- 第十二天 ~ 手把手教你做關鍵詞匹配項目(搜尋引擎)---- 第十八天

Selector主要步驟如下:

1. 擷取寶貝屬性。

2. 使用業務知識擴充寶貝屬性,形成CharList

3. 從詞庫中擷取關鍵詞

4. 關鍵詞拆分演算法

5. 匹配度演算法

6. 返回匹配上的關鍵詞列表

代碼如下:

 1 php 2 #@Filename:selector/Selector.php 3 #@Author:oshine 4  5 require_once dirname(__FILE__) . '/SelectorItem.php'; 6 require_once dirname(__FILE__) . '/charlist/CharList.php'; 7 require_once dirname(__FILE__) . '/charlist/CharlistHandle.php'; 8 require_once dirname(dirname(__FILE__)) . '/lib/Logger.php'; 9 10 class Selector11 {12 13     private static $charListHandle = array(14         "黑名單" => "BacklistCharListHandle",15         "近義詞" => "LinklistCharListHandle"16     );17 18     public static function select($num_iid)19     {20         $selectorItem = SelectorItem::createFromApi($num_iid);21 22         Logger::trace($selectorItem->props_name);23 24         $charlist = new CharList();25 26         foreach (self::$charListHandle as $matchKey => $className) {27 28             $handle = self::createCharListHandle($className, $charlist, $selectorItem);29             $handle->exec();30 31         }32 33         $selectWords = array();34 35         $keywords = DB::makeArray("select word from keywords");36         foreach ($keywords as $val) {37             # code...38             $keywordEntity = SplitterApp::split($val["word"]);39             40                 # code...41             if(MacthExector::macth($keywordEntity,$charlist)){42                 $selectWords[] = $val["word"];43             }           44 45         }46 47         return $selectWords;48     }49 50     public static function createCharListHandle($className, $charlist, $selectorItem)51     {52         if (class_exists($className)) {53             return new $className($charlist, $selectorItem);54         }55         throw new Exception("class not exists", 0);56     }57 }

測試驅動代碼編程請參照:

也是使用一樣的原理,先把測試代碼寫好,後續補全MatchExector代碼。

MatchExector主要功能計算匹配度。

1. 如果只要有一個詞在黑名單裡面,匹配度肯定為零。

2. 如果是核心詞,那麼根據以前提到的演算法來計算,請參照:手把手教你做關鍵詞匹配項目(搜尋引擎)---- 第十九天

 1 php 2 #@Filename:mathes/MatchExector.php 3 #@Author:oshine 4  5 class MatchExector { 6  7     public static function match(KeywordEntity $keywordEntity,CharList $charlist){ 8  9         $matchingDegree = 0;10         $elementWords = $keywordEntity->getElementWords();11         foreach ($elementWords as $word) {12             # code...13             if(in_array($word, $charlist->getBlacklist()))14                 return false;15             if(in_array($word, $charlist->getCore()))16                 $matchingDegree+=$keywordEntity->calculateWeight($word);17 18         }19 20         if($matchingDegree>0.8)21             return true;22         return false;23 24     }25     26 }

整個代碼相對來說實現了該有的功能,小帥帥非常的高興,因為項目完成了肯定少不了項目獎金,說不定還有一餐豐富的晚餐,

想想都開始流口水了。

小帥帥把代碼交給於老大,滿懷期待的等候於老大的最後肯定。

於老大看了之後會有哪些反應呢?請關注第三章:關鍵詞匹配項目深入研究(一)

第二章已完結,原始碼地址:手把手教你做關鍵詞匹配項目(二章完結篇)

http://www.bkjia.com/PHPjc/931389.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/931389.htmlTechArticle手把手教你做關鍵詞匹配項目(搜尋引擎)---- 第二十二天,教你做第二十二天 最新面試經曆:面試的感觸(二)、面試的感觸 最新的架構...

  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.