Использование MySQL REGEXP в пределах логического соответствия / против
У меня есть следующий запрос MySQL:
ВЫБЕРИТЕ заголовок, описание ОТ some_table WHERE MATCH (заголовок, описание) ПРОТИВ ('+ denver (REGEXP "[[:<:]] colorado [s] * [[:>:]]")' в булевом режиме);
здесь "regexp" ищет "полное слово" colorado (с или без окончания "s").
Я хочу на самом деле выбрать только те строки, которые имеют ("Денвер") И ("Колорадо" или "Колорадо"). Но я не могу поставить "+" для REGEXP. Я попытался, но получил 0 результатов, хотя в таблице есть строки, которые соответствуют требованию.
Любые идеи о том, как я могу получить "+" для работы с использованием REGEXP? Я строю это из скрипта PHP, где "denver" и "colorado" являются значениями переменных, которые я использую для создания оператора select.
Мой скрипт PHP/MySQL будет выглядеть примерно так:
ВЫБЕРИТЕ заголовок, описание ОТ some_table WHERE MATCH (заголовок, описание) ПРОТИВ ('+ $ var1 (REGEXP "[[:<:]] $ var2 [s] * [[:>:]]")' в булевом режиме);
1 ответ
Я не думаю, что это возможно, чтобы объединить регулярные выражения и MATCH ... В BOOLEAN MODE. Вам нужно использовать синтаксис для написания логических выражений.
Попробуйте что-то вроде этого:
SELECT title, description
FROM some_table
WHERE MATCH (title,description)
AGAINST ('+denver +(colorado colorados)' IN BOOLEAN MODE);