일반적으로 콘텐츠 웹사이트를 구축할 때 각 기사에는 해당 기사와 관련된 기사 목록이 표시되어야 합니다. 대부분의 사람들이 일반적으로 사용하는 방법은 키워드 목록을 작성하고, 각 기사에 어떤 키워드가 포함되어 있는지 결정하고, 마지막으로 키워드를 기반으로 기사와 가장 관련성이 높은 기사를 찾는 것입니다. 더 복잡한 콘텐츠를 포함하는 웹사이트의 경우 핵심 목록 단어를 결정하는 것이 분명히 더 어려울 것입니다.
이 기사에서는 예상되는 요구 사항을 쉽게 충족하기 위해 이전 방법과 다른 유사한_text(php4, php5) 함수를 소개합니다. 구체적인 아이디어는 다음과 같습니다. 기사 목록에서 모든 기사 제목을 꺼내고, 모든 기사 제목을 현재 제목과 비교하고, 비교 결과에서 배열을 생성하고, 유사한 텍스트를 사용하여 이를 결합합니다. 기사 제목과 원래 기사 제목을 비교합니다. , 제목의 유사도에 따라 제목을 재배열하여 원기사 와 유사한 기사 목록을 가져옵니다.
이 아이디어에 사용된 주요 기능은 다음과 같습니다.
int similar_text ( string $first, string $second[, float $percent] )
두 루트 문자열의 동일한 바이트 수를 반환합니다.
이 아이디어에 따라 다음 함수를 만듭니다. 이 함수의 기능은 $arr_title 배열을 $title과 유사한 순서로 재정렬하는 것입니다.
<?php $demo_title= "简明现代魔法"; $demo_arr_title= array("简单易懂的现代魔法","简单明了的现代魔法","简明扼要的古代魔法","不简单的现代魔法","很难懂的现代魔法"); $new_array= getSimilar($demo_title,$demo_arr_title); //print_r($new_array); echo"与[$demo_title]最相关的前三个文章是:<br/>"; for($j=0; $j<=2; $j++) { echo($j+1).":".$new_array[$j]."<br/>"; } //$title当前标题,$arrayTitle为需要查找的数组 functiongetSimilar($title,$arr_title) { $arr_len= count($arr_title); for($i=0; $i<=($arr_len-1); $i++) { //取得两个字符串相似的字节数 $arr_similar[$i] = similar_text($arr_title[$i],$title); } arsort($arr_similar); //按照相似的字节数由高到低排序 reset($arr_similar); //将指针移到数组的第一单元 $index= 0; foreach($arr_similaras$old_index=>$similar) { $new_title_array[$index] = $arr_title[$old_index]; $index++; } return$new_title_array; } ?>
프로그램 실행 결과:
与[简明现代魔法]最相关的前三个文章是: 1:简单明了的现代魔法 2:简单易懂的现代魔法 3:简明扼要的古代魔法
주의가 필요한 사항:
유사한 텍스트의 속도와 관련하여 누군가 이 테스트를 수행했으며 결과는 다음과 같습니다.
like_text의 속도 문제는 긴 텍스트 섹션(>20000자)에서만 문제가 되는 것 같습니다.
like_text를 호출하기 전에 테스트할 문자열이 20000자 미만인지 테스트함으로써 애플리케이션의 성능이 크게 향상되었음을 발견했습니다.
텍스트를 직접 비교용으로 사용하실 경우 속도가 느려질 수 있습니다.
이 기능은 영어에서는 그다지 효과적이지 않다고 합니다(관심 있는 독자들은 직접 사용해 볼 수 있습니다).영어로 사용할 경우에는 영어 문장을 공백을 사용하여 여러 단어로 구분한 뒤, 유사_텍스트와 유사한 함수를 작성하면 됩니다.
또한, 문장에 "적", "乐" 등 키워드가 아닌 문자가 많이 포함되어 있으면 이상적인 결과가 나오지 않을 수 있습니다.