关键词匹配项目深入研究-过滤器的引入,深入研究过滤器
关键词匹配项目深入研究(一) - 过滤器的引入
在开始看本篇时,请先了解 手把手教你做关键词匹配项目(搜索引擎)---- 第一天 ~ 手把手教你做关键词匹配项目(搜索引擎)---- 第二十二天
前言
<p> 接上回说到,小帅帅把完成后的代码,以及测试结果给出来后,于老大也没多说什么,就被要求上线了,原因很简单:大家都想有点贡献,福利也是少不了的,后期遇到的事情后期再来升级,那餐饭,小帅帅很happy,很满足,当然同行的有小丁丁,于老大,王总监。</p>
问题的前因
随着项目的运行,采集关键词的应用日益广泛,突然有一天小丁丁跑来找到小帅帅,小帅帅当然很欢喜,但是听到后面的对话凉了一大截。
“小帅帅,你看,这些词怎么有&,?,%,好多乱七八糟的词都有了,这些词都不太合适用,帮帮忙看看怎么去掉咯。”小丁丁的眼神也够厉害的,盯得小帅帅直哆嗦。
“大姐,好咯,我先去瞧瞧,这件事包在我身上,到时解决了跟你说声”。
小帅帅回去查了下,发现数据库里面好多这种古怪的词,小帅帅慌了,只好又去找到于老大。
“现在词库关键词里面包含&,?,%这种词很多,而且根据匹配度算法来算的话,这些词都是可用的,我们怎么办?”。
于老大听了小帅帅的解说,想出了一个方案,我们控制下这些关键词咯,反正这些关键词业务也不使用,我们就不要让他入库了,既可以减少关键词库的量,又能保证关键词的可利用率高。
小帅帅一听,于老大就是不一样,望尘莫及。
解决方案
增加一个功能,控制词源入库,符合规则的准入,不符合规则的丢弃--过滤器的功能。
设计方案
<p><strong> </strong> <span> 1</span> <span>class</span><span> Source { </span><span> 2</span> <span> 3</span> <span>public</span> <span>$keywords</span><span>; </span><span> 4</span> <span> 5</span> <span>public</span> <span>function</span><span> run() { </span><span> 6</span> <span> 7</span> <span>foreach</span> (<span>$this</span>->keywords <span>as</span> <span>$word</span><span>) { </span><span> 8</span> <span>#</span><span> code...</span> <span> 9</span> <span>if</span>(Filter::is(<span>$word</span>)) <span>continue</span><span>; </span><span>10</span> <span>11</span> <span>$keyword</span> = <span>new</span><span> Keyword(); </span><span>12</span> <span>$keyword</span>->word = <span>$word</span><span>; </span><span>13</span> <span>$keyword</span>-><span>save(); </span><span>14</span> <span> } </span><span>15</span> <span> } </span><span>16</span> <span>17</span> }
3. 新增Filter代码:
<span> 1</span> <?<span>php </span><span> 2</span> <span> 3</span> <span>#</span><span>@Filename: filter/Filter.php</span> <span> 4</span> <span>#</span><span>@Author: oShine</span> <span> 5</span> <span> 6</span> <span>class</span><span> Filter { </span><span> 7</span> <span> 8</span> <span>private</span> <span>static</span> <span>$filterWords</span> = <span>array</span>("*","?","%",".","&"<span>); </span><span> 9</span> <span>10</span> <span>public</span> <span>static</span> <span>function</span> is(<span>$word</span><span>){ </span><span>11</span> <span>$pattern</span> = "/(".<span>implode</span>("|", self::<span>$filterWords</span>).")/"<span>; </span><span>12</span> <span>return</span> <span>preg_match</span>(pattern, <span>$word</span><span>); </span><span>13</span> <span> } </span><span>14</span> <span>15</span> }
总结
良好的代码结构,新增移除功能都非常简单,工作效率提升了。小帅帅深深的爱上了这份工作。

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

SecLists
SecLists是最終安全測試人員的伙伴。它是一個包含各種類型清單的集合,這些清單在安全評估過程中經常使用,而且都在一個地方。 SecLists透過方便地提供安全測試人員可能需要的所有列表,幫助提高安全測試的效率和生產力。清單類型包括使用者名稱、密碼、URL、模糊測試有效載荷、敏感資料模式、Web shell等等。測試人員只需將此儲存庫拉到新的測試機上,他就可以存取所需的每種類型的清單。

mPDF
mPDF是一個PHP庫,可以從UTF-8編碼的HTML產生PDF檔案。原作者Ian Back編寫mPDF以從他的網站上「即時」輸出PDF文件,並處理不同的語言。與原始腳本如HTML2FPDF相比,它的速度較慢,並且在使用Unicode字體時產生的檔案較大,但支援CSS樣式等,並進行了大量增強。支援幾乎所有語言,包括RTL(阿拉伯語和希伯來語)和CJK(中日韓)。支援嵌套的區塊級元素(如P、DIV),

SublimeText3 Linux新版
SublimeText3 Linux最新版

記事本++7.3.1
好用且免費的程式碼編輯器

DVWA
Damn Vulnerable Web App (DVWA) 是一個PHP/MySQL的Web應用程序,非常容易受到攻擊。它的主要目標是成為安全專業人員在合法環境中測試自己的技能和工具的輔助工具,幫助Web開發人員更好地理解保護網路應用程式的過程,並幫助教師/學生在課堂環境中教授/學習Web應用程式安全性。 DVWA的目標是透過簡單直接的介面練習一些最常見的Web漏洞,難度各不相同。請注意,該軟體中