У меня есть запрос mysql / php, который ищет через базу данных и возвращает совпадения на основе строки поиска, введенной пользователем, она сортируется по заголовку по возрастанию, однако нам бы очень хотелось, чтобы она сортировалась по наилучшему совпадению (аналогично способ ElasticSearch оценивает результаты поиска со счетом).
В настоящее время при поиске «quake II» список результатов выглядит так:
- Quake - Quake 4 - Quake II - Quake III Arena
Ожидаемый список результатов должен быть:
- Quake II (corresponding exactly to the search) - Quake III Arena (containing entirely the search) - Quake - Quake 4
Текущий запрос php / mysql:
$nameKeys = explode(" ", $gamenamethathasbeensearchedfor); $query = "SELECT id FROM games WHERE GameTitle LIKE '%$nameKeys[0]%'"; for($i = 1; $i <= count($nameKeys); $i++) { if($nameKeys[$i] != "" || $nameKeys[$i] != " " || $nameKeys[$i] != " " || $nameKeys[$i] != " ") { $query .= " AND GameTitle LIKE '%$nameKeys[$i]%'"; } }