Php 搜索查询的搜索结果

Php 搜索查询的搜索结果,php,ranking,Php,Ranking,排名结果数据集 我正在建立一个元搜索工具,它可以根据用户的查询从不同的来源获得结果。我已经将结果保存在对象数组中,其中包含标题、描述、发布日期等信息。在显示在界面上之前,我想对它们进行排序,以便最相关的结果应该像搜索引擎一样位于顶部。但我对排名还不熟悉,也不知道。因此,请在这件事上指导我应该遵循哪种排序算法或任何有用的链接以获得帮助。我认为您需要在对象数组中添加“权重”列(可以为空),然后再显示需要循环权重的元素(如果它们有权重)。 然后,您的结果将显示在第一,如果没有重量只是正常的显示 这里有

排名结果数据集 我正在建立一个元搜索工具,它可以根据用户的查询从不同的来源获得结果。我已经将结果保存在对象数组中,其中包含标题、描述、发布日期等信息。在显示在界面上之前,我想对它们进行排序,以便最相关的结果应该像搜索引擎一样位于顶部。但我对排名还不熟悉,也不知道。因此,请在这件事上指导我应该遵循哪种排序算法或任何有用的链接以获得帮助。

我认为您需要在对象数组中添加“权重”列(可以为空),然后再显示需要循环权重的元素(如果它们有权重)。 然后,您的结果将显示在第一,如果没有重量只是正常的显示

这里有一个例子:

<?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