Сортировать по релевантности в MySQLi - если ключевое слово найдено в определенной строке, сначала отсортируйте по этому - PullRequest
0 голосов
/ 23 мая 2018

У меня есть этот запрос, который ищет статьи в БД.Я хотел бы изменить запрос так, чтобы, если ключевое слово было найдено в строке "title", запрос сначала сортировался по этому - чтобы поместить его в верхнюю часть результатов.

Результаты с ключевым словом в title должны считаться более важными, чем если бы ключевое слово было в содержании статьи.

Может ли это быть достигнуто в самом запросе, или это так?Требуется какой-то алгоритм?

Вот мой запрос:

if (isset($_POST['search'])) {
  $search = filter_var($search, FILTER_SANITIZE_SPECIAL_CHARS);

  $sql = "SELECT * FROM mydb WHERE title LIKE :search OR description LIKE :search OR content LIKE :search ORDER BY dates DESC";

  $stmt = $pdo->prepare($sql);
  $stmt->bindValue(':search', '%' . $search . '%', PDO::PARAM_STR);
  $stmt->execute();
    if ($stmt->rowCount() > 0) {
        $result = $stmt->fetchAll();
        foreach($result as $row) {
          // Loop...
        }
    }
    else {

    }

  // Closing
  $stmt = null;
  $pdo = null;
}

1 Ответ

0 голосов
/ 23 мая 2018

Итак, похоже, у этого есть простое решение - просто закажите title LIKE :search:

$sql = "SELECT * FROM mydb WHERE title LIKE :search OR description LIKE :search OR content LIKE :search ORDER BY title LIKE :search DESC";
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...