相信你在使用Google或者Baidu搜索的时候,肯定碰到过他们的关键词提示。
对于搜索引擎来说,他们有一整套分词技术及完整的词库。而对于一般简单的PHP应用来说,做到这种完善的分词又是很困难的。 其实php中有两个函数,可以近似的完成这样的功能。
这两个函数就是:levenshtein 和 similar_text 以下分别是这两个函数的官方解释: http://www.php.net/manual/en/function.levenshtein.php http://www.php.net/manual/en/function.similar-text.php
我们来简单看一下使用这两个函数的效果。
echo levenshtein(“ubuntu”,”ubuntw”); echo “<br>”; echo levenshtein(“ubuntu”,”aubvntu”); echo “<br>”; echo levenshtein(“ubuntu”,”vbvntw”); echo “<br>”; echo levenshtein(“ubuntu”,”ubuntu”);
这段代码的输出是:
1 2 3 0
也就是说,对于levenshtein函数,两个字符相似度越高,其返回值越小,如果相等,则函数返回0。
再来看看similar_text函数
similar_text(“ubuntu”,”ubuntw”,$a); echo $a; echo “<br>”; similar_text(“ubuntu”,”aubvntu”,$a); echo $a; echo “<br>”; similar_text(“ubuntu”,”vbvntw”,$a); echo $a; echo “<br>”; similar_text(“ubuntu”,”ubuntu”,$a); echo $a;
代码输出:
83.333333333333 76.923076923077 50 100
与levenshtein相反,similar_text则是相似度越高,其值越大,如果相等,则返回100。
了解了这两个函数的用法,我们可以通过这两个函数来达成类似最开始Google的那种效果了。当然还得有一些技术前提, 比如在某些CMS中,像DedeCMS,它本身维护了一个关键词的数据表,这样我们在每次搜索的时候,可以使用上面两个 函数对DedeCMS的关键词表进行逐一匹配,然后设定一个匹配限制,如果大于(小于)该值,则可以给出类似Google那样 的提示了。
两个PHP冷门函数的简要使用
相信你在使用Google或者Baidu搜索的时候,肯定碰到过他们的关键词提示。
对于搜索引擎来说,他们有一整套分词技术及完整的词库。而对于一般简单的PHP应用来说,做到这种完善的分词又是很困难的。
其实php中有两个函数,可以近似的完成这样的功能。
这两个函数就是:levenshtein 和 similar_text
以下分别是这两个函数的官方解释:
http://www.php.net/manual/en/function.levenshtein.php
http://www.php.net/manual/en/function.similar-text.php
我们来简单看一下使用这两个函数的效果。
echo levenshtein(“ubuntu”,”ubuntw”);
echo “<br>”;
echo levenshtein(“ubuntu”,”aubvntu”);
echo “<br>”;
echo levenshtein(“ubuntu”,”vbvntw”);
echo “<br>”;
echo levenshtein(“ubuntu”,”ubuntu”);
这段代码的输出是:
1
2
3
0
也就是说,对于levenshtein函数,两个字符相似度越高,其返回值越小,如果相等,则函数返回0。
再来看看similar_text函数
similar_text(“ubuntu”,”ubuntw”,$a);
echo $a;
echo “<br>”;
similar_text(“ubuntu”,”aubvntu”,$a);
echo $a;
echo “<br>”;
similar_text(“ubuntu”,”vbvntw”,$a);
echo $a;
echo “<br>”;
similar_text(“ubuntu”,”ubuntu”,$a);
echo $a;
代码输出:
83.333333333333
76.923076923077
50
100
与levenshtein相反,similar_text则是相似度越高,其值越大,如果相等,则返回100。
了解了这两个函数的用法,我们可以通过这两个函数来达成类似最开始Google的那种效果了。当然还得有一些技术前提,
比如在某些CMS中,像DedeCMS,它本身维护了一个关键词的数据表,这样我们在每次搜索的时候,可以使用上面两个
函数对DedeCMS的关键词表进行逐一匹配,然后设定一个匹配限制,如果大于(小于)该值,则可以给出类似Google那样
的提示了。