Осложняется это тем, что необходимо предоставлять только релевантные результаты.
Раньше искал лайком, проблем не было, выдавало только то, что нужно. А теперь целая туча не релевантных результатов.
Я вот о чем, например запрос TBU-CA065, а поиск выдает:
TBU-CA040-050-WH
TBU-CA025-050-WH
Поэтому я решил обрезать через регулярку результаты по вхождению ключа, т.е.
foreach ($result as $val)
{
if (preg_match(""))
}
Но теперь другая проблема, запрос 111-111 не найдет 111 111 и наоборот, с пробелом не найдет тоже с тире.
А так же не найдет например TBU-WH так как нужно дословное вхождение.
Лайк же искал по всем частям и выдавал очень релевантно.
Пробовал разбивать по пробелам и тирешкам запрос, он тогда искал по TBU и выдавал все что есть с TBU, а там сотни левых номеров.
Подскажите куда копать спс.)
SELECT *,
MATCH (pole1, pole3, pole5) AGAINST ('".addslashes($_REQUEST['search'])."' IN BOOLEAN MODE) AS REL
FROM `1s`
WHERE MATCH (pole1, pole3, pole5) AGAINST ('".addslashes($_REQUEST['search'])."' IN BOOLEAN MODE)
ORDER BY REL DESC
LIMIT 0,20;
$string = $row['pole1'].' '.$row['pole3'].' '.$row['pole5'];
if (preg_match("/".$search_word."/i", $string)) {
$flag1=1;
// echo "Вхождение найдено.";
} else {
// echo "Вхождение не найдено.";
$flag1=0;
}