Mysql - лайк и регулярное использование вместе - PullRequest
0 голосов
/ 10 января 2019

Я оптимизирую свой запрос, так как полнотекстовый поиск возвращает бесполезный результат, когда в тексте есть числа и повторяющиеся ключевые слова.

Что я хочу сделать, так это извлечь цифры из текста и добавить X баллов к релевантности при сортировке результата.

Все работает гладко, кроме одной вещи;

Когда я хочу извлечь и расставить по приоритетам результат с номером Z, он также учитывает другие числа, которые включают число Z в любой его части.

Например;

Sample Data
###############
Text 55.A
Text 55_B
Text #55ABC
Text 551234.
Text 55677#
Text 556

    Query
###############
... CASE WHEN (myTable.title like "% 55%") THEN ...

Expected output
###############
Text 55.A
Text 55_B

Actual output
###############
Text 55.A
Text 55_B
Text #55ABC
Text 551234.
Text 55677#
Text 556

Как я могу использовать REGEXP с LIKE, после числа, которое я дал, могут быть символы и символы.

Заранее спасибо

1 Ответ

0 голосов
/ 10 января 2019

Вы можете использовать

REGEXP '([[:<:]]|_)55([[:>:]]|_)'

Если вы используете MySQL 8.x и новее, которые используют библиотеку регулярных выражений ICU, используйте

REGEXP '(\\b|_)55(\\b|_)'

См. Демоверсию regex

(\\b|_) соответствует границе слова или _, ([[:<:]]|_) соответствует начальной границе слова или _, а ([[:>:]]|_) соответствует конечной границе слова или _.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...