То, что я создаю, — это простая форма для поиска в таблице базы данных MySQL, которая на данный момент блестяще ищет текстовые имена, теперь мне нужно искать число широты, хранящееся в виде числа с плавающей запятой. Заголовок таблицы: name, lat и lng. Когда пользователь ищет соответствующую широту, только те результаты отображаются на той же странице. Любая помощь будет потрясающей.
$sql = "SELECT name,lat,lng FROM table WHERE name LIKE '%".$term."%'
OR lat MATCH '%".$term."%' OR lng MATCH '%".$term."%'";
Изменить DATATYPE
для широты и долготы в числовое значение. Выбор представительства
Определите, запрашивает ли пользователь широту / долготу по сравнению с именем. OR
убивает производительность почти так же, как ведущий шаблон.
Использовать FULLTEXT
индекс вместе с MATCH(name) AGAINST('$term' in BOOLEAN MODE)
для эффективного поиска по имени.
Используйте диапазон; пользователи не будут вводить точные значения широты / долготы. Также есть вопросы округления. lat BETWEEN $lat - 0.01 AND $lat + 0.01
, (Это примерно в километре север / юг; отрегулируйте по желанию.
После того, как вы реализовали большинство из них, вернитесь за дополнительными советами / злоупотреблениями.
Других решений пока нет …