Inhaltsverzeichnis
手把手教你做关键词匹配项目(搜索引擎)---- 第二十二天,教你做第二十二天
Heim php教程 php手册 手把手教你做关键词匹配项目(搜索引擎)---- 第二十二天,教你做第二十二天

手把手教你做关键词匹配项目(搜索引擎)---- 第二十二天,教你做第二十二天

Jun 13, 2016 am 09:18 AM
Tun 关键词 匹配 手把手 搜索引擎 lehre dich 项目

手把手教你做关键词匹配项目(搜索引擎)---- 第二十二天,教你做第二十二天

最新面试经历:面试的感触(二)、面试的感触

最新的架构:高并发数据采集的架构应用(Redis的应用)

吐槽:今天也是刚把心态调整好,继续写以前没有完成的文章,最近几个月自己也是休整了一段时间,回家做苦力,也当作是锻炼锻炼自己的身体,毕竟任何东西都换不回你的健康,我也是建议做IT行业的帅哥们多活动活动你们其它的部位。

 

第二十二天

起点:手把手教你做关键词匹配项目(搜索引擎)---- 第一天

回顾:手把手教你做关键词匹配项目(搜索引擎)---- 第二十一天

 

小帅帅是乐于做总结的人,根据以前所学的知识他总结了如下:

1. 宝贝属性的扩展和类型的问题初步已经得到很好的控制了,不过要推广和运营维护还是遇到了很大的障碍。

2. 对关键词的拆分使用了scws扩展以及自己原生的业务拆词方案,拆词有效的解决了词组方面的匹配难度。

3. 所有的初始工作好像已经完成了,只需要最后的整理项目应该可以正式运行起来了。

小帅帅的主动意识比较强烈,他没有去问于老大,就自己动手写了份代码,该代码主要是为了把所有的步骤连接起来。

宝贝属性的扩展CharList的构建请参照:手把手教你做关键词匹配项目(搜索引擎)---- 第十二天 ~ 手把手教你做关键词匹配项目(搜索引擎)---- 第十八天

Selector主要步骤如下:

1. 获取宝贝属性。

2. 使用业务知识扩充宝贝属性,形成CharList

3. 从词库中获取关键词

4. 关键词拆分算法

5. 匹配度算法

6. 返回匹配上的关键词列表

代码如下:

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

测试驱动代码编程请参照:

也是使用一样的原理,先把测试代码写好,后续补全MatchExector代码。

MatchExector主要功能计算匹配度。

1. 如果只要有一个词在黑名单里面,匹配度肯定为零。

2. 如果是核心词,那么根据以前提到的算法来计算,请参照:手把手教你做关键词匹配项目(搜索引擎)---- 第十九天

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

 

整个代码相对来说实现了该有的功能,小帅帅非常的高兴,因为项目完成了肯定少不了项目奖金,说不定还有一餐丰富的晚餐,

想想都开始流口水了。

 

小帅帅把代码交给于老大,满怀期待的等候于老大的最后肯定。

于老大看了之后会有哪些反应呢?请关注第三章:关键词匹配项目深入研究(一)

 

第二章已完结,源代码地址:手把手教你做关键词匹配项目(二章完结篇)

 

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. So reparieren Sie Audio, wenn Sie niemanden hören können
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Wie man alles in Myrise freischaltet
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Wie stelle ich die Blende beim Xiaomi Mi 14 Ultra ein? Wie stelle ich die Blende beim Xiaomi Mi 14 Ultra ein? Mar 19, 2024 am 09:01 AM

Die Anpassung der Blendengröße hat einen entscheidenden Einfluss auf den Fotoeffekt. Das Xiaomi Mi 14 Ultra bietet eine beispiellose Flexibilität bei der Einstellung der Kamerablende. Damit jeder die Blende reibungslos einstellen und die Blendengröße frei anpassen kann, bietet Ihnen der Herausgeber hier eine ausführliche Anleitung zum Einstellen der Blende beim Xiaomi Mi 14Ultra. Wie stelle ich die Blende beim Xiaomi Mi 14Ultra ein? Starten Sie die Kamera, wechseln Sie in den „Professionellen Modus“ und wählen Sie die Hauptkamera aus – W-Objektiv. Klicken Sie auf die Blende, öffnen Sie das Blendenrad, A ist automatisch, wählen Sie je nach Bedarf f/1,9 oder f/4,0.

Kann KI Fermats letzten Satz überwinden? Der Mathematiker gab fünf Jahre seiner Karriere auf, um 100 Beweisseiten in Code umzuwandeln Kann KI Fermats letzten Satz überwinden? Der Mathematiker gab fünf Jahre seiner Karriere auf, um 100 Beweisseiten in Code umzuwandeln Apr 09, 2024 pm 03:20 PM

Fermats letzter Satz steht kurz davor, von der KI erobert zu werden? Und das Bedeutsamste an der ganzen Sache ist, dass der letzte Satz von Fermat, den die KI gerade lösen wird, genau dazu dient, zu beweisen, dass KI nutzlos ist. Früher gehörte die Mathematik zum Bereich der reinen menschlichen Intelligenz; heute wird dieses Gebiet von fortschrittlichen Algorithmen entschlüsselt und mit Füßen getreten. Bild Der letzte Satz von Fermat ist ein „berüchtigtes“ Rätsel, das Mathematikern seit Jahrhunderten Rätsel aufgibt. Es wurde 1993 bewiesen, und jetzt haben Mathematiker einen großen Plan: den Beweis mithilfe von Computern nachzubilden. Sie hoffen, dass etwaige logische Fehler in dieser Version des Beweises durch einen Computer überprüft werden können. Projektadresse: https://github.com/riccardobrasca/flt

Mar 18, 2024 pm 01:20 PM

Ce Modifier (CheatEngine) ist ein Spielmodifizierungstool zum Ändern und Bearbeiten des Spielspeichers. Als Nächstes erklärt Ihnen der Editor, wie Sie Chinesisch in Ce Modifier festlegen. Bei der neuen Software, die wir herunterladen, kann es verwirrend sein, dass die Benutzeroberfläche nicht auf Chinesisch ist. Auch wenn diese Software nicht in China entwickelt wurde, gibt es Möglichkeiten, sie in die chinesische Version zu konvertieren. Dieses Problem kann durch einfaches Anwenden des chinesischen Patches gelöst werden. Öffnen Sie nach dem Herunterladen und Installieren der CheatEngine-Software (ce modifier) ​​den Installationsort und suchen Sie den Ordner mit dem Namen „Sprachen“, wie in der folgenden Abbildung dargestellt

Wie aktualisiere ich Honor MagicOS 8.0 auf dem Honor 90 GT? Wie aktualisiere ich Honor MagicOS 8.0 auf dem Honor 90 GT? Mar 18, 2024 pm 06:46 PM

Honor 90GT ist ein kostengünstiges Smartphone mit hervorragender Leistung und hervorragendem Benutzererlebnis. Allerdings kann es manchmal zu Problemen kommen, z. B. wie aktualisiere ich Honor MagicOS8.0 auf dem Honor 90GT? Dieser Schritt kann bei verschiedenen Mobiltelefonen und Modellen unterschiedlich sein. Lassen Sie uns also besprechen, wie Sie das System richtig aktualisieren. Wie aktualisiere ich Honor MagicOS 8.0 auf Honor 90GT? Laut Nachrichten vom 28. Februar hat Honor heute das öffentliche Beta-Update von MagicOS8.0 für seine drei Mobiltelefone 90GT/100/100Pro veröffentlicht. Die Paketversionsnummer ist 8.0.0.106 (C00E106R3P1). . Stellen Sie sicher, dass der Akku des 90GT vollständig aufgeladen ist.

Planet Mojo: Aufbau eines Web3-Spiel-Metaversums aus dem Autoschachspiel Mojo Melee Planet Mojo: Aufbau eines Web3-Spiel-Metaversums aus dem Autoschachspiel Mojo Melee Mar 14, 2024 pm 05:55 PM

Beliebte Metaverse-Spieleprojekte, die im letzten Krypto-Zyklus gegründet wurden, beschleunigen ihre Expansion. Am 4. März kündigte PlanetMojo, die Web3-Spiele-Metaverse-Plattform, eine Reihe wichtiger Entwicklungen in seiner Spieleökologie an, darunter die Ankündigung des kommenden Parkour-Spiels GoGoMojo und den Start der neuen Staffel „Way of War“ im Flaggschiff-Autoschach Spiel MojoMelee und die Feier des neuen Die erste ETH-Serie „WarBannerNFT“ startete diese Saison in Zusammenarbeit mit MagicEden. Darüber hinaus gab PlanetMojo bekannt, dass sie planen, noch in diesem Jahr Android- und iOS-Mobilversionen von MojoMelee auf den Markt zu bringen. Dieses Projekt wird Ende 2021 gestartet. Nach fast zwei Jahren harter Arbeit in der Baisse wird es bald abgeschlossen sein.

Erfahren Sie, wie Sie die neuen erweiterten Funktionen von iOS 17.4 „Schutz vor gestohlenen Geräten' nutzen. Erfahren Sie, wie Sie die neuen erweiterten Funktionen von iOS 17.4 „Schutz vor gestohlenen Geräten' nutzen. Mar 10, 2024 pm 04:34 PM

Apple hat am Dienstag das iOS 17.4-Update veröffentlicht, das eine Reihe neuer Funktionen und Korrekturen für iPhones bringt. Das Update enthält neue Emojis und EU-Nutzer können diese auch aus anderen App-Stores herunterladen. Darüber hinaus stärkt das Update auch die Kontrolle der iPhone-Sicherheit und führt weitere Einstellungsoptionen für den „Schutz gestohlener Geräte“ ein, um Benutzern mehr Auswahl und Schutz zu bieten. „iOS17.3 führt zum ersten Mal die Funktion „Schutz vor gestohlenen Geräten“ ein, die den vertraulichen Informationen der Benutzer zusätzliche Sicherheit verleiht. Wenn der Benutzer nicht zu Hause oder an anderen vertrauten Orten ist, erfordert diese Funktion, dass der Benutzer zum ersten Mal biometrische Informationen eingibt Zeit und nach einer Stunde müssen Sie Informationen erneut eingeben, um auf bestimmte Daten zuzugreifen und diese zu ändern, z. B. um Ihr Apple-ID-Passwort zu ändern oder den Schutz vor gestohlenen Geräten zu deaktivieren.

DaVinci Resolve Studio unterstützt jetzt die AV1-Hardwarekodierung für AMD-Grafikkarten DaVinci Resolve Studio unterstützt jetzt die AV1-Hardwarekodierung für AMD-Grafikkarten Mar 06, 2024 pm 10:04 PM

Aktuelle Nachrichten: LackMagic hat das öffentliche Beta-Update 18.5PublicBeta2 der Videobearbeitungssoftware DaVinci ResolveStudio veröffentlicht, das AV1-Kodierungsunterstützung für AMD Radeon-Grafikkarten bietet. Nach dem Update auf die neueste Version können Benutzer von AMD-Grafikkarten die Hardwarebeschleunigung für die AV1-Kodierung in DaVinci Resolve Studio nutzen. Obwohl der Beamte keine Angaben zu den unterstützten Architekturen oder Modellen macht, wird erwartet, dass alle Benutzer von AMD-Grafikkarten diese Funktion ausprobieren können. Im Jahr 2018 veröffentlichte AOMedia einen neuen Videokodierungsstandard AV1 (AOMediaVideoCodec1.0). AV1 wird von mehreren produziert

Vereinfachen Sie die Datei-Upload-Verarbeitung mit Golang-Funktionen Vereinfachen Sie die Datei-Upload-Verarbeitung mit Golang-Funktionen May 02, 2024 pm 06:45 PM

Antwort: Ja, Golang bietet Funktionen, die das Hochladen von Dateien vereinfachen. Details: Der MultipartFile-Typ bietet Zugriff auf Dateimetadaten und -inhalte. Die FormFile-Funktion ruft eine bestimmte Datei aus der Formularanforderung ab. Die Funktionen ParseForm und ParseMultipartForm werden zum Parsen von Formulardaten und mehrteiligen Formulardaten verwendet. Die Verwendung dieser Funktionen vereinfacht den Dateiverarbeitungsprozess und ermöglicht Entwicklern, sich auf die Geschäftslogik zu konzentrieren.

See all articles