텍스트 파일에서 키워드를 찾으려고 할 때 키워드를 찾을 때 매치마다 점수가 1이됩니다. 아래의 프로그램은 점수를 효율적으로 계산하지만 높은 점수에서 낮은 점수로 점수를 분류하지 않습니다. 이 문제에 대한 해결책을 제공해주십시오.PHP가 예상대로 정렬되지 않습니다.
<?php
$lines = file("Abstract.txt");
$Result = array();
$index = 0;
$search_term1= "Tamoxifen";
$search_term2="Doxorubicin";
$search_term3="Synergistic";
$search_term4="MCF-7";
$search_term5="Inhibition";
$keywords = array($search_term1, $search_term2, $search_term3);
$replace_keyword = array("<b>".$search_term1."</b>", "<b>".$search_term2."</b>", "<b>".$search_term3."</b>");
foreach ($lines as $line_num => $line)
{
if($line_num > 1)
{
$arr = explode("\t", $line); //Reads tab separated file
$Pubmed = trim((string)$arr[0]); //first column is Pubmed
$title = trim((string)$arr[1]); //second column is title
$abstract = trim((string)$arr[2]); //third column is abstract
$score = substr_count(strtoupper($title), strtoupper($search_term1)) + substr_count(strtoupper($abstract), strtoupper($search_term1)); //counts occurrence of 1st string in title & abstract
$score += (substr_count(strtoupper($title), strtoupper($search_term2)) + substr_count(strtoupper($abstract), strtoupper($search_term2))); //counts occurrence of 2nd string in title & abstract
$score += (substr_count(strtoupper($title),strtoupper($search_term3)) + substr_count(strtoupper($abstract), strtoupper($search_term3))); //counts occurrence of 3rd string in title & abstract
//store the result as well as data into array
$Result[$index]["Pubmed"] = $Pubmed;
$Result[$index]["<BR>score"] = $score;
$Result[$index]["<BR>title"] = str_ireplace($keywords, $replace_keyword, $title);
$Result[$index]["<BR>abstract"] = str_ireplace($keywords, $replace_keyword, $abstract);
$index++;
}
}
//sort the array by score
$sorter=array();
$ret=array();
reset($Result);
$key = "score";
foreach ($Result as $ii => $va) {
$sorter[$ii]=$va[$key];
}
arsort($sorter);
foreach ($sorter as $ii => $va) {
$ret[$ii]=$Result[$ii];
}
$Result=$ret;
foreach($Result as $instance)
{
$keys = array_keys($instance);
foreach($keys as $key)
{
if(!strcmp($key,"abstract"))
echo "\n<b>".$key."</b> : ".$instance[$key]."\n";
else
echo "<b>".$key."</b> : ".$instance[$key]."\n";
}
echo "\n\n_________________________________________________________________________________________________________________________________________________________________________________________________\n\n";
}
?>
하시기 바랍니다 여기
코드입니다 최소한 * 충분한 * 코드를 제공한다. 문제를 재현 할 수 있습니다. –결과는 어떻게 생겼으며 어떻게 보이고 싶습니까? – jeroen
@ 제로 엔 : 약 400 개의 기사에 각각 ID, 제목 및 초록이 게시되었습니다. 기사에서 키워드를 검색하고 각 경기의 점수를 계산하려고합니다. 아래의 프로그램은 점수를 계산 하나 그것을 분류하지는 않습니다. 결과는 $ Pubmed와 같아야합니다.
$ 점수
$ 제목
$ 초록, 이제는 더 높은 점수를 가진 기사가 더 낮은 점수에 이어지는 것을 원하는 모든 400 개의 기사에 해당됩니다. – Mary