手把手教你做关键词匹配项目(搜索引擎)---- 第二十天,教你做第二十天_PHP教程
程序员文章站
2024-01-02 23:36:46
...
手把手教你做关键词匹配项目(搜索引擎)---- 第二十天,教你做第二十天
客串:屌丝的坑人表单神器、数据库那点事儿
面向对象升华:面向对象的认识----新生的初识、面向对象的番外----思想的梦游篇(1)、面向对象的认识---如何找出类
负载均衡:负载均衡----概念认识篇、负载均衡----实现配置篇(Nginx)
吐槽:有人反馈了这样的一个信息,说该文章越到最后越难看懂,跟不上节奏,也有的人说小帅帅的能力怎么飙的那么快,是不是我比较蠢。也有的直接看文字,不看代码,代码太难懂了。
其实我这几天也一直在思考这个问题,所以没办法就去开展了一些面向对象的课程,希望对那些跟不上的有些帮助。其实说真的,读者不反馈的话,我只好按照我认为的小帅帅去开展课程了。
第二十天
起点:手把手教你做关键词匹配项目(搜索引擎)---- 第一天
回顾:手把手教你做关键词匹配项目(搜索引擎)---- 第十九天
话说小帅帅为了解决那个分词算法写出了初版,他拿给于老大看的时候,被要求重写了。
原因有以下几点:
1. 如何测试,测试数据呢?
2. Splitter是不是做了太多事情?
3. 连衣裙xxl裙连衣裙这种 有重复词组怎么办?
小帅帅拿着这些问题,开始重构。
首先他发现了这点,中文、英文和中英文的判断,以及长度的计算,他把这个写成了类:
php class UTF8 { /** * 检测是否utf8 * @param $char * @return bool */ public static function is($char){ return (preg_match("/^([".chr(228)."-".chr(233)."]{1}[".chr(128)."-".chr(191)."]{1}[".chr(128)."-".chr(191)."]{1}){1}/",$char) || preg_match("/([".chr(228)."-".chr(233)."]{1}[".chr(128)."-".chr(191)."]{1}[".chr(128)."-".chr(191)."]{1}){1}$/",$char) || preg_match("/([".chr(228)."-".chr(233)."]{1}[".chr(128)."-".chr(191)."]{1}[".chr(128)."-".chr(191)."]{1}){2,}/",$char)); } /** * 计算utf8字的个数 * @param $char * @return float|int */ public static function length($char) { if(self::is($char)) return ceil(strlen($char)/3); return strlen($char); } /** * 检测是否为词组 * @param $word * @return bool */ public static function isPhrase($word){ if(self::length($word))
推荐阅读
-
手把手教你做关键词匹配项目(搜索引擎)---- 第十五天,教你做----_PHP教程
-
手把手教你做关键词匹配项目(搜索引擎)---- 第二十一天,教你做第二十一天_PHP教程
-
手把手教你做关键词匹配项目(搜索引擎)---- 第二十一天,教你做第二十一天_PHP教程
-
手把手教你做关键词匹配项目(搜索引擎)---- 第十六天,教你做----_PHP教程
-
手把手教你做关键词匹配项目(搜索引擎)---- 第十二天,教你做第十二天_PHP教程
-
手把手教你做关键词匹配项目(搜索引擎)---- 第八天,教你做第八天_PHP教程
-
手把手教你做关键词匹配项目(搜索引擎)---- 第九天,教你做第九天_PHP教程
-
手把手教你做关键词匹配项目(搜索引擎)---- 第十七天,教你做第十七天_PHP教程
-
手把手教你做关键词匹配项目(搜索引擎)---- 第八天,教你做第八天_PHP教程
-
手把手教你做关键词匹配项目(搜索引擎)---- 第二十天,教你做第二十天_PHP教程