У меня есть новое требование от клиента для проекта управления сотрудниками, которое я выполняю, чтобы позволить их пользователям выполнять пользовательский логический поиск.
в основном позволяет им использовать: И, ИЛИ, НЕ, скобки и кавычки.
каков наилучший способ реализовать это? Я проверил MySQL, и они используют другой синтаксис.
Это тестовый сценарий:
Требование: Поиск магов или варваров, имеющих звание элитного или ветеранского уровня и выходцев из Сингапура
Булева строка: ("Маг" ИЛИ "Варвар") И (Элита ИЛИ "Уровень ветеранов") и сингапурская
Это один из кодов, которые я буду рассматривать для модификации, который я получил от Булевский поиск строк на чистом PHP
function booleanSearch($content, $search) {
$criteria = str_getcsv($search, ' ');
while ($criteria) {
$not = false;
$q = array_shift($criteria);
if (substr($q, 0, 2) === '-"') {
$not = true;
while (substr($q, -1) != '"') {
$q .= " " . array_shift($criteria);
}
$q = substr($q, 2, -1);
}
else if (substr($q, 0, 1) === '-' && strpos($q, ' ') === false) {
$not = true;
$q = substr($q, 1);
}
$found = strpos($content, $q) !== false;
if ($found === $not) {
return false;
}
}
return true;
}