сортировка результатов поиска с помощью php - PullRequest
0 голосов
/ 30 июля 2011

Используя результаты поиска из mysql, как я могу отсортировать результаты с помощью php, чтобы сначала показать самые близкие совпадения?

то есть пользователь ищет "ключевое слово", и у меня 50 результатов, содержащих "ключевое слово" из разныхтаблицы и поля в моей базе данных.Они все совпадают.Я хочу показать результаты с первым «точным соответствием» и последующими совпадениями:

1 = "keyword in this result"
2 = "keyword in 10th result"
3 = "keywords in 5th result"
4 = "has keyword in 3rd result"
5 = "this has the keyword in the 8th result"
6 = "this has mykeyword in the 40th result"

1 Ответ

0 голосов
/ 30 июля 2011

Что ж, как только вы вернете свой набор записей обратно в PHP, вы сможете легко отсортировать массив, как захотите, с помощью usort(): http://php.net/manual/en/function.usort.php

<?php
$keyword = 'foobar';
function cmp($a, $b)
{
    if (strpos($a, $keyword) == strpos($b, $keyword)) {
        return 0;
    }
    return (strpos($a, $keyword) < strpos($b, $keyword)) ? -1 : 1;
}

$arr = $my_recordset;
usort($arr, "cmp");

foreach ($arr as $key => $value) {
    echo "$key: $value\n";
}
?>

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

...