Давайте сначала проанализируем используемое вами условие, а также отсортируем по:
MATCH (phppos_items.name) AGAINST ('iphone 8*' IN BOOLEAN MODE)
Согласно Mysql Boolean Full-Text Searches , вы подходите для любых текстов, которые содержат ЛЮБОЙ слов:
Значение любых текстов, которые имеют iphone ИЛИ 8 совпадают.
То, что вы хотите, это сопоставить " iphone 8 " как строку с приоритетом над "iphone" или "8".* ".
Для этого:
- Добавить" iphone 8 * "в качестве строки для совпадения
- , используя > <</em> операторов
- и присваиваем ей приоритет над "iphone" и "8 *"
Измените запрос sql на:
AGAINST ('>"iphone 8*" >iphone <8*' IN BOOLEAN MODE)
в операторе выбора
означает, что он дает приоритет точному iphone 8 * и iphone над 8 *.