排名结果数据集 我正在构建元搜索工具,它可以响应用户查询从不同的源获取结果。我已经将结果保存在具有标题,描述,发布日期等信息的对象数组中,然后在界面上显示它我想对它们进行排名,以便最相关的结果应该像搜索引擎一样位于顶部。但我是排名新手并且不了解它。所以请在这个问题上引导我,我应该遵循哪种排名算法或任何有用的帮助链接。
答案 0 :(得分:0)
我认为你需要在你的Object数组上加上“加权”列(可以为null),然后才显示你需要循环加权的元素(如果有的话)。 然后,您的结果将首先显示,如果没有重量,则只显示正常显示。
这是一个例子:
<?php
//Function to compare weightings
function cmp($a, $b) {
if ($a == $b) {
return 0;
}
return ($a < $b) ? -1 : 1;
}
$searches = array(
'songs'=> array(
0 => array(
'title' => 'coldplay',
'weight'=> 3
),
1 => array(
'title' => 'eminem',
'weight'=> 2
),
2 => array(
'title' => 'rihanna',
'weight'=> 2
),
3 => array(
'title' => 'shakira',
'weight'=> 1
),
4 => array(
'title' => 'nirvana',
'weight'=> null
),
5 => array(
'title' => 'acdc'
)
),
);
//this foreach is used to apply the weighting on itterations
foreach($searches['songs'] as $key => $search){
//if no weight of weight is null
if(array_key_exists('weight', $search) && $search['weight']){
$array_by_weight[$key]['weight'] = $search['weight'];
$array_by_weight[$key]['title'] = $search['title'];
}else{
$array_by_weight[$key]['weight'] = 5; //Value max of weighting
$array_by_weight[$key]['title'] = $search['title'];
}
}
//We use our function to compare and sort our array
uasort($array_by_weight, 'cmp');
//display
foreach($array_by_weight as $songs){
echo $songs['title'].' | ';
echo $songs['weight'].PHP_EOL;
}
输出:
shakira | 1
eminem | 2
rihanna | 2
coldplay | 3
acdc | 5
nirvana | 5
我希望它可以帮到你。