博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
手把手教你做关键词匹配项目(搜索引擎)---- 第二十二天
阅读量:5092 次
发布时间:2019-06-13

本文共 2553 字,大约阅读时间需要 8 分钟。

最新面试经历:、

最新的架构:

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

 

第二十二天

起点:

回顾:

 

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

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

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

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

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

宝贝属性的扩展CharList的构建请参照: ~

Selector主要步骤如下:

1. 获取宝贝属性。

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

3. 从词库中获取关键词

4. 关键词拆分算法

5. 匹配度算法

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

代码如下:

1 
"BacklistCharListHandle",15 "近义词" => "LinklistCharListHandle"16 );17 18 public static function select($num_iid)19 {20 $selectorItem = SelectorItem::createFromApi($num_iid);21 22 Logger::trace($selectorItem->props_name);23 24 $charlist = new CharList();25 26 foreach (self::$charListHandle as $matchKey => $className) {27 28 $handle = self::createCharListHandle($className, $charlist, $selectorItem);29 $handle->exec();30 31 }32 33 $selectWords = array();34 35 $keywords = DB::makeArray("select word from keywords");36 foreach ($keywords as $val) {37 # code...38 $keywordEntity = SplitterApp::split($val["word"]);39 40 # code...41 if(MacthExector::macth($keywordEntity,$charlist)){42 $selectWords[] = $val["word"];43 } 44 45 }46 47 return $selectWords;48 }49 50 public static function createCharListHandle($className, $charlist, $selectorItem)51 {52 if (class_exists($className)) {53 return new $className($charlist, $selectorItem);54 }55 throw new Exception("class not exists", 0);56 }57 }

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

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

MatchExector主要功能计算匹配度。

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

2. 如果是核心词,那么根据以前提到的算法来计算,请参照:

1 
getElementWords();11 foreach ($elementWords as $word) {12 # code...13 if(in_array($word, $charlist->getBlacklist()))14 return false;15 if(in_array($word, $charlist->getCore()))16 $matchingDegree+=$keywordEntity->calculateWeight($word);17 18 }19 20 if($matchingDegree>0.8)21 return true;22 return false;23 24 }25 26 }

 

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

想想都开始流口水了。

 

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

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

 

第二章已完结,源代码地址:(二章完结篇)

 

转载于:https://www.cnblogs.com/oshine/p/4179691.html

你可能感兴趣的文章
sqlite的坑
查看>>
digitalocean --- How To Install Apache Tomcat 8 on Ubuntu 16.04
查看>>
【题解】[P4178 Tree]
查看>>
Mongo自动备份
查看>>
cer证书签名验证
查看>>
synchronized
查看>>
【深度学习】caffe 中的一些参数介绍
查看>>
Python-Web框架的本质
查看>>
QML学习笔记之一
查看>>
App右上角数字
查看>>
从.NET中委托写法的演变谈开去(上):委托与匿名方法
查看>>
小算法
查看>>
201521123024 《java程序设计》 第12周学习总结
查看>>
新作《ASP.NET MVC 5框架揭秘》正式出版
查看>>
IdentityServer4-用EF配置Client(一)
查看>>
WPF中实现多选ComboBox控件
查看>>
读构建之法第四章第十七章有感
查看>>
Windows Phone开发(4):框架和页 转:http://blog.csdn.net/tcjiaan/article/details/7263146
查看>>
Unity3D研究院之打开Activity与调用JAVA代码传递参数(十八)【转】
查看>>
python asyncio 异步实现mongodb数据转xls文件
查看>>