程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> 關於PHP編程 >> 關鍵詞匹配項目深入研究-過濾器的引入,深入研究過濾器

關鍵詞匹配項目深入研究-過濾器的引入,深入研究過濾器

編輯:關於PHP編程

關鍵詞匹配項目深入研究-過濾器的引入,深入研究過濾器


關鍵詞匹配項目深入研究(一) - 過濾器的引入

在開始看本篇時,請先了解 手把手教你做關鍵詞匹配項目(搜索引擎)---- 第一天 ~ 手把手教你做關鍵詞匹配項目(搜索引擎)---- 第二十二天

前言

     接上回說到,小帥帥把完成後的代碼,以及測試結果給出來後,於老大也沒多說什麼,就被要求上線了,原因很簡單:大家都想有點貢獻,福利也是少不了的,後期遇到的事情後期再來升級,那餐飯,小帥帥很happy,很滿足,當然同行的有小丁丁,於老大,王總監。

問題的前因

       隨著項目的運行,采集關鍵詞的應用日益廣泛,突然有一天小丁丁跑來找到小帥帥,小帥帥當然很歡喜,但是聽到後面的對話涼了一大截。

      “小帥帥,你看,這些詞怎麼有&,?,%,好多亂七八糟的詞都有了,這些詞都不太合適用,幫幫忙看看怎麼去掉咯。”小丁丁的眼神也夠厲害的,盯得小帥帥直哆嗦。

      “大姐,好咯,我先去瞧瞧,這件事包在我身上,到時解決了跟你說聲”。

       小帥帥回去查了下,發現數據庫裡面好多這種古怪的詞,小帥帥慌了,只好又去找到於老大。

       “現在詞庫關鍵詞裡面包含&,?,%這種詞很多,而且根據匹配度算法來算的話,這些詞都是可用的,我們怎麼辦?”。

       於老大聽了小帥帥的解說,想出了一個方案,我們控制下這些關鍵詞咯,反正這些關鍵詞業務也不使用,我們就不要讓他入庫了,既可以減少關鍵詞庫的量,又能保證關鍵詞的可利用率高。

        小帥帥一聽,於老大就是不一樣,望塵莫及。

解決方案

         增加一個功能,控制詞源入庫,符合規則的准入,不符合規則的丟棄--過濾器的功能。

設計方案

   1 class Source { 2 3 public $keywords; 4 5 public function run() { 6 7 foreach ($this->keywords as $word) { 8 # code... 9 if(Filter::is($word)) continue; 10 11 $keyword = new Keyword(); 12 $keyword->word = $word; 13 $keyword->save(); 14 } 15 } 16 17 }

 

      3. 新增Filter代碼:

 1 <?php
 2 
 3 #@Filename: filter/Filter.php
 4 #@Author: oShine
 5 
 6 class Filter {
 7 
 8     private static $filterWords = array("*","?","%",".","&");
 9 
10     public static function is($word){
11         $pattern = "/(".implode("|", self::$filterWords).")/";
12         return preg_match(pattern, $word);
13     }
14 
15 }

       

總結

     良好的代碼結構,新增移除功能都非常簡單,工作效率提升了。小帥帥深深的愛上了這份工作。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved