Полнотекстовый поиск только с правильными словами

Я кодирую функцию поиска, используя full-text-search и я хочу, чтобы результат отображался только в том случае, если набранные слова содержатся в таблице.

$search_value = $db->mysqli->real_escape_string("lana born to die sdkjfhsdkjfhdsjkfhdsjkfhd");

$query = "select * from `music` where match(`title`, `artist`) against ('$search_value')";

artist               title
----------------------------------
lana del rey    west coast
lana del rey    born to die
lana del rey    summertime sadness
lana del rey    blue jeans

Например если я буду искать: lana born to die sdkjfhsdkjfhdsjkfhdsjkfhd это показывает мне lana del rey born to die в следствии. Этого не должно быть.
Я хочу, чтобы он показывал результаты, только если вы наберете для ex. lana, lana del rey born и так далее.

Есть идеи.

0

Решение

Вы можете преобразовать запрос, чтобы иметь логический полнотекстовый поиск. Это делается путем добавления + или — перед каждым словом в поисковом запросе.

В этом случае мы добавляем +, так как это стоит как AND, тогда как a — как NOT.

Таким образом, если вы хотите, чтобы оно было таким, чтобы каждое слово становилось обязательным, вы можете добавить следующий код:

PHP:

$search_value = $db->mysqli->real_escape_string("lana born to die sdkjfhsdkjfhdsjkfhdsjkfhd");
$search_value = str_replace(" ", " +", $search_value);
$query = "select * from `music` where match(`title`, `artist`) against ('$search_value' IN BOOLEAN MODE)";
3

Другие решения

Вам необходимо исправить свой запрос:

$query = "select * from `music` where `title` LIKE '%$search_value%'
OR `artist` LIKE '%$search_value%'";

Я надеюсь, что это поможет вам.

0

По вопросам рекламы [email protected]