ホームページ >バックエンド開発 >PHPチュートリアル >基本的な単語マッチングプロジェクトの徹底研究 - フィルターの導入
キーワードマッチングプロジェクトの徹底学習 - フィルターの導入
キーワードマッチングプロジェクトの徹底学習 (1) - フィルターの導入
この記事を読み始める前に、まずは段階的な手順を理解してください。キーワード マッチング プロジェクト (検索エンジン) の実行 ----1 日目~ キーワード マッチング プロジェクト (検索エンジン) の実行方法を段階的に説明します。----22 日目
はしがき
前章の続きで、Xiao Shuai Shuai が完成したコードとテスト結果を提示した後、上司 Yu は多くを語らずにオンラインに接続するように求められました。理由は非常に単純です。誰もが貢献したいと考えており、後で遭遇するものは後でアップグレードされます。もちろん、シャオ・ディンディン、上司、王監督はとても幸せで満足していました。それも彼と一緒に。
問題の原因
プロジェクトの運営に伴い、キーワード収集のアプリケーションは、ある日突然、ますます普及してきました。丁さんはシャオ・シュアイ・シュアイを探しに来た。シャオ・シュアイ・シュアイはもちろんとても嬉しかったが、その後の会話を聞いて、とても冷静な気持ちになった。
「Xiao Shuai Shuai、ほら、なぜこれらの単語に &、?、% が付いているのですか。乱雑な単語がたくさんあります。これらの単語は使用に適していません。削除する方法を教えてください。」ディンディンの瞳はとても力強かったので、シャオシュアイシュアイは震えました。
「お姉さん、わかりました。まずは見に行きます。この問題は私が処理します。解決したらお知らせします。」
シャオシュアイが戻って確認すると、データベースにそのような奇妙な単語がたくさんあることに気づき、シャオシュアイはパニックになり、再び上司を見つけなければなりませんでした。
「語彙のキーワードには &、?、% などの単語がたくさんありますが、マッチング アルゴリズムによれば、これらの単語はすべて利用可能です。どうすればよいでしょうか?」
ユウ上司はシャオ・シュアイシュアイの説明を聞いて、これらのキーワードを管理しましょう。いずれにせよ、これらのキーワードはデータベースに含めたくないのです。キーワード データベースの量を削減し、キーワードの高可用性を確保します。
シャオシュアイシュアイはそれを聞いて、上司とは違うので追いつけませんでした。
解決策
デバイスの機能。
デザインプラン
アップグレードされたバージョンは決定的でカラフルです。 クラス図:
コードスキーム
1. 入力ソース、FileSource、TaobaoHotsSource コードは変更されません。 2. 次のようにフィルター コードをソース コードに追加します。<span style="color: #008080;"> 1</span> <span style="color: #0000ff;">class</span><span style="color: #000000;"> Source {</span><span style="color: #008080;"> 2</span> <span style="color: #008080;"> 3</span> <span style="color: #0000ff;">public</span> <span style="color: #800080;">$keywords</span><span style="color: #000000;">;</span><span style="color: #008080;"> 4</span> <span style="color: #008080;"> 5</span> <span style="color: #0000ff;">public</span> <span style="color: #0000ff;">function</span><span style="color: #000000;"> run() {</span><span style="color: #008080;"> 6</span> <span style="color: #008080;"> 7</span> <span style="color: #0000ff;">foreach</span> (<span style="color: #800080;">$this</span>->keywords <span style="color: #0000ff;">as</span> <span style="color: #800080;">$word</span><span style="color: #000000;">) {</span><span style="color: #008080;"> 8</span> <span style="color: #008000;">#</span><span style="color: #008000;"> code...</span><span style="color: #008080;"> 9</span> <span style="color: #0000ff;">if</span>(Filter::is(<span style="color: #800080;">$word</span>)) <span style="color: #0000ff;">continue</span><span style="color: #000000;">;</span><span style="color: #008080;">10</span> <span style="color: #008080;">11</span> <span style="color: #800080;">$keyword</span> = <span style="color: #0000ff;">new</span><span style="color: #000000;"> Keyword();</span><span style="color: #008080;">12</span> <span style="color: #800080;">$keyword</span>->word = <span style="color: #800080;">$word</span><span style="color: #000000;">;</span><span style="color: #008080;">13</span> <span style="color: #800080;">$keyword</span>-><span style="color: #000000;">save();</span><span style="color: #008080;">14</span> <span style="color: #000000;"> }</span><span style="color: #008080;">15</span> <span style="color: #000000;"> }</span><span style="color: #008080;">16</span> <span style="color: #008080;">17</span> }3. フィルター コードを追加します:
<span style="color: #008080;"> 1</span> <span style="color: #000000;">php</span><span style="color: #008080;"> 2</span> <span style="color: #008080;"> 3</span> <span style="color: #008000;">#</span><span style="color: #008000;">@Filename: filter/Filter.php</span><span style="color: #008080;"> 4</span> <span style="color: #008000;">#</span><span style="color: #008000;">@Author: oShine</span><span style="color: #008080;"> 5</span> <span style="color: #008080;"> 6</span> <span style="color: #0000ff;">class</span><span style="color: #000000;"> Filter {</span><span style="color: #008080;"> 7</span> <span style="color: #008080;"> 8</span> <span style="color: #0000ff;">private</span> <span style="color: #0000ff;">static</span> <span style="color: #800080;">$filterWords</span> = <span style="color: #0000ff;">array</span>("*","?","%",".","&"<span style="color: #000000;">);</span><span style="color: #008080;"> 9</span> <span style="color: #008080;">10</span> <span style="color: #0000ff;">public</span> <span style="color: #0000ff;">static</span> <span style="color: #0000ff;">function</span> is(<span style="color: #800080;">$word</span><span style="color: #000000;">){</span><span style="color: #008080;">11</span> <span style="color: #800080;">$pattern</span> = "/(".<span style="color: #008080;">implode</span>("|", self::<span style="color: #800080;">$filterWords</span>).")/"<span style="color: #000000;">;</span><span style="color: #008080;">12</span> <span style="color: #0000ff;">return</span> <span style="color: #008080;">preg_match</span>(pattern, <span style="color: #800080;">$word</span><span style="color: #000000;">);</span><span style="color: #008080;">13</span> <span style="color: #000000;"> }</span><span style="color: #008080;">14</span> <span style="color: #008080;">15</span> }
概要
。シャオ・シュアイ・シュアイはこの仕事に夢中になりました。