Я выполняю поисковый запрос с помощью MATCH и AGAINST в булевом режиме, и у меня есть ключевые слова, хранящиеся в ARRAY, чтобы показать, что они похожи на TAGS, когда я отображаю значения массива для построения оператора запроса, он работает нормально, но я хочу Сохраните БОЛЕЙСКУЮ функциональность поиска, например, «точное совпадение» или другие специальные символы.
Можно ли вставить кавычки, когда значение массива идет с пробелами?
INPUT: keyword1 keyword2 "exact match" keyword3
Covert to this array:
$keywords = array(
[0] = "keyword1",
[1] = "keyword2",
[2] = "exact match", <-- This came with quotes so is stored as a phrase
[3] = "keyword3");
Затем мне нужно преобразовать в оператор SQL с Implode:
$SQL = "SELEC field WHERE MATCH(keywords) AGAINST('";
$SQL .= implode(" ", $keywords);
$SQL .= "' IN BOOLEAN MODE)";
Я пытаюсь использовать ARRAY_FILTER (), но он различает только одно вместо другого:
function words($var){
return preg_match('/\s/', $var);
}
$SQL = "SELEC field WHERE MATCH(keywords) AGAINST('";
$SQL .= implode(" ", array_filter($keywords, 'words'));
$SQL .= "' IN BOOLEAN MODE)";
//example above only outputs: exact match
Моя цель состоит в том, чтобы различать значение массива, когда значение содержит более двух слов, функция добавляет к значению кавычки
Expected Output:
$SQL = "SELECT field WHERE MATCH(keywords) AGAINST('keyword1 keyword2 "exact match" keyword3' IN BOOLEAN MODE)";
Большое спасибо за вашу помощь
Задача ещё не решена.
Других решений пока нет …