@User782
Кратко о себе

Как увеличить точность выдачи в живом поиске по сайту?

Файл php живого поиска найденного на просторах интернета

header("Content-type: text/html; charset=windows-1251");
$search = $_POST['search'];
$search = addslashes($search);
$search = htmlspecialchars($search);
$search = stripslashes($search);
   if($search == ''){
      exit("Начните вводить запрос");
   }
$db = mysql_connect("localhost","user","password");
mysql_select_db("basa",$db);
mysql_query("SET NAMES cp1251");
                
$query = mysql_query("SELECT * FROM table WHERE MATCH(text) AGAINST('$search')",$db);
if(mysql_num_rows($query) > 0){
   $sql = mysql_fetch_array($query);
   do{
     echo "<div>".$sql['text']."</div>";
   }while($sql = mysql_fetch_array($query));
}else{
   echo "Нет результатов";
}


всё работает, но нужно выдачу организовать по другому
например в базе есть 3 строки с таким содержанием
1. белый черный
2. красный синий
3. синий черный зеленый

сейчас если ввести слово в поиск - синий, то выдаст строки со словом синий,
но если ввести - синий зеленый, то не выдаст ничего хотя 3 строка подходит для выдачи

помогите разобраться с вопросом
  • Вопрос задан
  • 483 просмотра
Пригласить эксперта
Ответы на вопрос 5
Stimulate
@Stimulate
могу
Дели поисковый запрос на слова, и совершай поиск по всем словам сразу (в твоем случае)
Ответ написан
Exploding
@Exploding
wtf?
Вот я когда-то давно походу четко на ваш случай простыню накатал Как сделать поиск по ключевым словам?
Ответ написан
Комментировать
sim3x
@sim3x
Или ставьте сфинкссерч, или делайте теги (категории) и давайте пользователю выбирать теги
https://vimeo.com/151817227
Ответ написан
Комментировать
Sanes
@Sanes
phpmorphy
Ответ написан
Комментировать
Вообще если хочется прям а-ля яндекс, то задача достаточно нетривиальная и вариантов много. Если нет, то самое банальное решение поиск сначала точного вхождения всей фразы и отдача этого результата в верху подсказки. Далее то же для n-1 граммы (минус последнее слово) и отдачей результата во вторую очередь. Затем поиск по отдельным словам и отдачей в третью очередь.

Если есть желание заморочиться, можно придумать много интересных подзадач: поиск с учетом морфологии, предлогов, приведение фразы к единому виду (например размеры: 120 на 120, 120*120, 120х120, 120 120), учитывать сокращения, логировать частотность поисковых фраз и искать с ее учетом, исправление опечаток, языка ввода при неверной раскладке и так далее.

Или просто прикрутить поисковый движек. Сфинкс или Эластиксёрч.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы