目录
手把手教你做关键词匹配项目(搜索引擎)---- 第十二天,教你做第十二天
首页 后端开发 php教程 手把手教你做关键词匹配项目(搜索引擎)---- 第十二天,教你做第十二天_PHP教程

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

Jul 13, 2016 am 10:20 AM
- 关键词 匹配 手把手 搜索引擎 教你 项目

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

第十二天

起点:

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

回顾:

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

上回说到,关键词应用需求为:

通过淘宝API取到的宝贝标题以及宝贝属性,匹配出适合该宝贝的关键词.

初期考虑以下因素:

适合人群的匹配 :男装 (匹配出来的关键词不能有女)  女装(匹配出来的关键词不能有男) 情侣装(男女适用)  童装(?)

 

淘宝API取出的宝贝属性字段:

小帅帅想了很久,总算想出来了一个解决方案,方案如下:

 

<?<span>php
</span><span>class</span><span> SelectorItem {

    </span><span>private</span> <span>$item</span><span>;

    </span><span>public</span> <span>function</span> __construct(<span>$item</span><span>){
        </span><span>$this</span>->item = <span>$item</span><span>;
    }

    </span><span>public</span> <span>function</span> __get(<span>$name</span><span>){
        </span><span>if</span>(<span>isset</span>(<span>$this</span>->item-><span>$name</span><span>)){
            </span><span>return</span> <span>$this</span>->item-><span>$name</span><span>;
        }
        </span><span>return</span> <span>null</span><span>;
    }

    </span><span>public</span> <span>static</span> <span>function</span> createFromApi(<span>$num_iid</span><span>){
        </span><span>$client</span> = <span>new</span><span> TopClient();
        </span><span>$client</span>->appkey = 'xx'<span>;
        </span><span>$client</span>->secretKey = 'xx'<span>;

        </span><span>$req</span> = <span>new</span><span> ItemGetRequest();
        </span><span>$req</span>->setFields('props_name,property_alias,detail_url,cid,title'<span>);
        </span><span>$req</span>->setNumIid(<span>$num_iid</span><span>);
        </span><span>$resp</span> = <span>$client</span>->execute(<span>$req</span><span>);

        </span><span>if</span>(<span>isset</span>(<span>$resp</span>-><span>code)){
            </span><span>#</span><span> error handle</span>
            <span>throw</span> <span>new</span> <span>Exception</span>(<span>$resp</span>->msg, <span>$resp</span>-><span>code);
        }
        </span><span>return</span> <span>new</span> self(<span>$resp</span>-><span>item);
    }
}

</span><span>$selectorItem</span> = SelectorItem::createFromApi(<span>$_REQUEST</span>["num_iid"<span>]);
Logger</span>::trace(<span>$selectorItem</span>-><span>props_name);
</span><span>$blackCharList</span> = <span>array</span><span>();
</span><span>$coreCharList</span> = <span>array</span><span>();
</span><span>$matchTitle</span> = <span>$selectorItem</span>->title.<span>$selectorItem</span>-><span>props_name;
</span><span>if</span>(<span>preg_match</span>('/男装/', <span>$matchTitle</span><span>)){

    </span><span>$coreCharList</span> = <span>array</span><span>(
        </span>"男装"<span>
    );

    </span><span>$blackList</span> = <span>array</span><span>(
      </span>"女"<span>
    );
}</span><span>else</span> <span>if</span>(<span>preg_match</span>('/女装/', <span>$matchTitle</span><span>)){

    </span><span>$coreCharList</span> = <span>array</span><span>(
        </span>"女装"<span>
    );

    </span><span>$blackList</span> = <span>array</span><span>(
        </span>"男"<span>
    );
}</span><span>else</span> <span>if</span>(<span>preg_match</span>('/情侣装/', <span>$matchTitle</span><span>)){

    </span><span>$coreCharList</span> = <span>array</span><span>(
        </span>"情侣装",
        "男装",
        "女装"<span>
    );

}</span><span>else</span> <span>if</span>(<span>preg_match</span>('/童装/',<span>$matchTitle</span><span>)){
    </span><span>$coreCharList</span> = <span>array</span><span>(
        </span>"童装",
        "儿童装",
        "女童装",
        "男童装"<span>
    );
}

</span><span>$where</span> = <span>array</span><span>();
</span><span>foreach</span>(<span>$coreCharList</span> <span>as</span> <span>$char</span><span>){
    </span><span>$where</span>[] = " word LIKE '%<span>$char</span>%'"<span>;
}

</span><span>foreach</span>(<span>$blackCharList</span> <span>as</span> <span>$char</span><span>){
    </span><span>$where</span>[] = " word NOT LIKE '%<span>$char</span>%'"<span>;
}

</span><span>if</span>(<span>count</span>(<span>$where</span>)>0<span>){
    </span><span>$sql</span> = "SELECT * FROM keywords WHERE ".<span>implode</span>(' AND ',<span>$where</span><span>);
    Logger</span>::trace(<span>$sql</span><span>);
    </span><span>//</span><span>search database</span>
}
登录后复制

小帅帅很高兴的把代码拿给于老大时,小帅帅被于老大批了,原因很简单:

1. 没有考虑未来变化因素

2. if 太多

小帅帅被批了,心里很不高兴,但还是不得不去请教于老大的高招。

于老大给了一个方向给他。

1. 学习设计模式消除过多的if,以及如何去解耦。

设计模式(Design pattern)是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性。 毫无疑问,设计模式于己于他人于系统都是多赢的;设计模式使代码编制真正工程化;设计模式是软件工程的基石脉络,如同大厦的结构一样。[来自百度百科]

小帅帅只好去了解设计模式了。

附:

<span>SelectorItem 里面的 __get 函数,称为Magic Methods<br />如:</span>
登录后复制
$selectorItem->title 其实会调用 __get('title')
登录后复制
<span><br /><br /></span>
登录后复制

 

www.bkjia.comtruehttp://www.bkjia.com/PHPjc/866463.htmlTechArticle手把手教你做关键词匹配项目(搜索引擎)---- 第十二天,教你做第十二天 第十二天 起点: 1.手把手教你做关键词匹配项目(搜索引擎)...
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳图形设置
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您听不到任何人,如何修复音频
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25:如何解锁Myrise中的所有内容
3 周前 By 尊渡假赌尊渡假赌尊渡假赌

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

小米 14 Ultra怎么调整光圈? 小米 14 Ultra怎么调整光圈? Mar 19, 2024 am 09:01 AM

光圈大小的调整对于拍照效果有着至关重要的影响,小米14Ultra在相机光圈调节方面提供了前所未有的灵活性。为了让大家都能顺利调节光圈,实现光圈大小的自由调节,小编在这里为大家带来了小米14Ultra怎么设置光圈的详细教程。小米14Ultra怎么调整光圈?启动相机,切换至“专业模式”,选择主摄-W镜头。点击光圈,打开光圈转盘,A为自动,按需选择f/1.9或f/4.0。

AI攻克费马大定理?数学家放弃5年职业生涯,将100页证明变代码 AI攻克费马大定理?数学家放弃5年职业生涯,将100页证明变代码 Apr 09, 2024 pm 03:20 PM

费马大定理,即将被AI攻克?而且整件事最意味深长的地方在于,AI即将解决的费马大定理,正是为了证明AI无用。曾经,数学属于纯粹的人类智力王国;如今,这片疆土正被先进的算法所破译,所践踏。图片费马大定理,是一个「臭名昭著」的谜题,在几个世纪以来,一直困扰着数学家们。它在1993年被证明,而现在,数学家们有一个伟大计划:用计算机把证明过程重现。他们希望在这个版本的证明中,如果有任何逻辑上的错误,都可由计算机检查出来。项目地址:https://github.com/riccardobrasca/flt

Cheat Engine怎么设置中文?ce修改器设置中文的方法 Cheat Engine怎么设置中文?ce修改器设置中文的方法 Mar 18, 2024 pm 01:20 PM

Ce修改器(CheatEngine)是一款专用于对游戏内存进行修改和编辑的游戏修改工具,那么在CheatEngine中怎么设置中文呢?接下来小编为大伙讲述ce修改器设置中文的方法内容,希望可以帮助到有需要的朋友。在我们下载的新软件中,若发现它不是中文界面,可能会让人感到困惑。尽管这款软件不是由中国开发的,但我们仍有方法将其转换为中文版本。只需简单地应用中文补丁,就能解决这个问题。在下载并安装了CheatEngine(ce修改器)软件后,打开安装位置,找到名为languages的文件夹,如下图所示

荣耀 90 GT怎么更新荣耀MagicOS 8.0? 荣耀 90 GT怎么更新荣耀MagicOS 8.0? Mar 18, 2024 pm 06:46 PM

荣耀90GT是一款性价比很高的智能手机,拥有出色的性能和出色的用户体验。然而,有时候我们可能会遇到一些问题,比如荣耀90GT怎么更新荣耀MagicOS8.0呢?这个步骤因为不同的手机不同的机型可能会有些区别,那么,让我们一起来探讨一下,如何正确地升级系统吧。荣耀90GT怎么更新荣耀MagicOS8.0?2月28日消息,荣耀今天为旗下90GT/100/100Pro三款手机推送MagicOS8.0公测更新,包版本号为8.0.0.106(C00E106R3P1)1.确保您的荣耀90GT的电池电量充足,

教你使用 iOS 17.4「失窃设备保护」新进阶功能 教你使用 iOS 17.4「失窃设备保护」新进阶功能 Mar 10, 2024 pm 04:34 PM

Apple在周二推出了iOS17.4更新,为iPhone带来了一系列新功能和修复。这次更新包括了全新的表情符号,同时欧盟用户也能够下载其他应用商店。此外,更新还加强了对iPhone安全性的控制,引入了更多的「失窃设备保护」设置选项,为用户提供更多选择和保障。"iOS17.3首次引入了“失窃设备保护”功能,为用户的敏感资料增加了额外的安全保障。当用户不在家等熟悉地点时,该功能要求用户首次输入生物特征信息,并在一小时后再次输入信息才能访问和更改某些数据,如修改AppleID密码或关闭失窃设备保护功能

Planet Mojo:从自走棋游戏Mojo Melee建起Web3游戏元宇宙 Planet Mojo:从自走棋游戏Mojo Melee建起Web3游戏元宇宙 Mar 14, 2024 pm 05:55 PM

成立于上个加密周期的热门元宇宙游戏项目们正在加速扩张。3月4日,Web3游戏元宇宙平台PlanetMojo宣布了其游戏生态的多个重要动态,包括预告即将推出跑酷游戏GoGoMojo、旗舰自走棋游戏MojoMelee推出新赛季“战之道”,以及为庆祝新赛季与MagicEden合作推出的首个ETH系列“WarBannerNFT”。另外,PlanetMojo还透露,他们计划在今年晚些时候推出MojoMelee的Android和iOS移动版本。这个项目在2021年底启动,经过在熊市中近两年的努力建设,即将在

DaVinci Resolve Studio 已支持AMD显卡的AV1硬件编码 DaVinci Resolve Studio 已支持AMD显卡的AV1硬件编码 Mar 06, 2024 pm 10:04 PM

最近新消息,lackMagic目前推出了达芬奇DaVinciResolveStudio视频编辑软件的18.5PublicBeta2公测版更新,为AMDRadeon显卡带来了AV1编码支持。更新到最新版本后,AMD显卡用户将能够在DaVinciResolveStudio中利用硬件加速来进行AV1编码。尽管官方并未具体指明支持的架构或型号,但预计所有的AMD显卡用户都可以尝试这一功能。2018年,AOMedia发布了全新的视频编码标准AV1(AOMediaVideoCodec1.0)。AV1是由多家

用Golang函数简化文件上传处理 用Golang函数简化文件上传处理 May 02, 2024 pm 06:45 PM

答案:是,Golang提供的函数可以简化文件上传处理。详情:MultipartFile类型提供对文件元数据和内容的访问。FormFile函数从表单请求中获取特定文件。ParseForm和ParseMultipartForm函数用于解析表单数据和多部分表单数据。使用这些函数简化了文件处理流程,让开发者专注于业务逻辑。

See all articles