Я использую следующий код для поиска в моей базе данных на основе ключевых слов, заданных пользователем. Похоже, что он работает нормально, но я ищу оба на основе местоположения и ключевых слов. Вот где у меня проблемы.ключевое слово mysql поиск возврат неточных результатов
Если я не размещаю место и не ищу, он возвращает все результаты независимо от местоположения, и это нормально. Если я помещен в место, которое не существует, и некоторые ключевые слова, он возвращает все результаты, соответствующие ключевым словам, и, кажется, игнорирует местоположение.
Также, если я оставлю ключевые слова пустыми и поиска по месту, которое существует, кажется, что он снова игнорирует местоположение и возвращает все результаты.
Таким образом, казалось бы, моя логика настройки местоположения не работает.
$keys = explode(" ",$tag);
$search_sql = "SELECT DISTINCT providers.* FROM providers JOIN provider_tags ON providers.id = provider_tags.provider_Id JOIN tags ON provider_tags.tag_id = tags.id WHERE tags.tag_name LIKE '%$tag%' OR providers.provider_name LIKE '%$tag%' OR providers.provider_contact_name LIKE '%$tag%' OR providers.provider_features LIKE '%$tag%' ";
foreach($keys as $k){
$search_sql .= " OR tags.tag_name LIKE '%$k%' OR providers.provider_name LIKE '%$k%' OR providers.provider_contact_name LIKE '%$k%' OR providers.provider_features LIKE '%$k%' ";
}
$search_sql .= " AND (providers.provider_town LIKE '%{$location}%' OR providers.provider_local_area LIKE '%{$location}%' OR providers.provider_postcode LIKE '%{$location}%')";
echo $search_sql;
$gettags = mysqli_query($con, $search_sql) or die(mysqli_error($con));
В касательной к этому вопросу, я настоятельно рекомендую вам взглянуть на естественный язык запросов, так как это, вероятно, гораздо лучшее решение, что вы делаете. Читайте об этом здесь: http://dev.mysql.com/doc/refman/5.6/en/fulltext-natural-language.html –