Сортировка и substr_count - PullRequest
       12

Сортировка и substr_count

0 голосов
/ 25 апреля 2011

Я пытаюсь сделать простую функцию поиска для небольшого сайта, и у меня есть самые релевантные элементы вверху

$q = "SELECT * FROM pages as p WHERE p.content LIKE '%$searchparam%' OR p.title LIKE '%$searchparam%' LIMIT 500";       
$r = @mysqli_query ($dbc, $q); // Run the query.
while ($row = mysqli_fetch_array($r, MYSQLI_ASSOC)) {

    $count = substr_count($row['content'], "$searchparam");

Я предполагаю, что мне нужно отсортировать строку $ со значением из $ count, но я не уверен, как это сделать.Кто-нибудь может мне помочь с синтаксисом?

1 Ответ

1 голос
/ 25 апреля 2011

Лучшим решением было бы использование возможностей полнотекстового поиска MySq'ls , поскольку результаты возвращаются ранжированными, и это, вероятно, проще и надежнее, чем пытаться написать его самостоятельно.Вы также можете посмотреть на другие поисковые системы, такие как Sphinx.

Однако, если вы хотите продолжить свой метод, вы должны сделать что-то вроде:

$results = array();
while ($row = mysqli_fetch_array($r, MYSQLI_ASSOC)) {
    $count = substr_count($row['content'], "$searchparam");
    //add the details you want to the array. You could also just add count
    // to $row and add $row to $results
    $results[] = array(
        'count' => $count,
        'resultid' => $row['id']
    );
}

//custom sort function that uses the count to order results    
function cmp($a, $b){
    if ($a['count'] == $b['count]) {
        return 0;
    }
    return ($a > $b) ? -1 : 1;
}

//sort the array using the sort function
usort($results, 'cmp');
...