第一次使用PHPCMS V9的时候就感觉这个东西在输入完标题后就直接生成关键词挺有意思的,后来发现他的搜索也很有意思,将每一篇文章都自动生成一串的关键词然后存放到一个数据表中,再作全文索引搜索,原来一直没有研究过,也不知道他是怎么实现的,感觉挺神密,近来想把他的这个功能单独抽出来用,于是就拿来研究了一下.
先说主交对他的基本原理的分析,不对话请指正.
首先:使用空格分隔需要生成关键词的字符串,如果分出来的字数小于min_len 则不于处理,大于max_len会进行继续分隔.
第二:判断分出来的是否为词组,这里就用到了dict.csv 在这个文件中有很多词组,他们的格式就是“少年 333”类似这样的,在该类初始化的时候已经把这个文件读完并放入内存,使用的变量为$this->rank_dic 二维数组 数组的格式是 $this->rank_dic[关键词的长度][关键词] = csv文件中每行后面的数字,注,该数字没有实际意义,为什么这么说,大家可以看看这一句:
- function is_word($okWord){
- $slen = strlen($okWord);
- if($slen > $this->max_len){
- return false;
- }else{
- return isset($this->rank_dic[$slen][$okWord]);
- } //Vevb.com
- }
该方法的意思是判断循环的分隔字符是否为词组,判断是依据就是 $this->rand_dic[$slen][$okWord]是否定义,所以说他这个值是没有意义的,只是为了说明他有一个值就可以了.
但也有一个问题,这个词库不能更新,是一个很严重的问题,而且也不能自定义.
第三:如果第二步判断的是一个词组就加上一个空格把原有的关键词连在一起。
第四:处理完后就可以返回一个处理完的关键词了,你怎么处理这个关键词就是你自己的事了.
新闻热点
疑难解答