ホームページ >バックエンド開発 >PHPチュートリアル >基本的な単語マッチングプロジェクトの徹底研究 - フィルターの導入

基本的な単語マッチングプロジェクトの徹底研究 - フィルターの導入

WBOY
WBOYオリジナル
2016-06-13 12:12:27924ブラウズ

キーワードマッチングプロジェクトの徹底学習 - フィルターの導入

キーワードマッチングプロジェクトの徹底学習 (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> }

概要

。シャオ・シュアイ・シュアイはこの仕事に夢中になりました。

1F
DM Zhang Pengfei
は、JSP バージョンだったらいいのにと言いました
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。