mySQL - найти контекст большого списка ключевых слов в одном поле - PullRequest
0 голосов
/ 16 сентября 2018

Я в отчаянии от этого.

В моей базе данных Maria MySql есть поле, содержащее такие данные:

Dummydata Dummydata

Dummydata Dummydata 15

Dummydata 124578 KEYWORD

Он также может выглядеть так в последней строке:

Dummydata 124578KEYWORD

или

Dummydata 124578-KEYWORD

и т.д.

Теперь у меня есть список из примерно 3000 ключевых слов, которые необходимо исключить из моих результатов, это в основном единственный критерий, который у меня есть.

Я попробовал вот так

AND NOT (FIELD LIKE '%KEYWORD1%' OR FIELD  LIKE '%KEYWORD2%')

Здесь просто все перенастраивается, как если бы это было проигнорировано

и

AND NOT (FIELD IN ('%KEYWORD1%','%KEYWORD2%')')

Здесь это выглядит так, будто оно просто ищет в первом абзаце

Это не похоже на работу: (

Можете ли вы помочь?

1 Ответ

0 голосов
/ 16 сентября 2018

Только для нескольких ключевых слов вы можете использовать NOT REGEXP / NOT RLIKE

AND FIELD NOT RLIKE '[0-9]+[ -]?(keyword1|keyword2|keyword3)'

Вы также можете создать таблицу с ключевыми словами.Затем используйте NOT EXISTS с RLIKE

AND NOT EXISTS
(
   SELECT 1
   FROM wordstoavoid w
   WHERE t.FIELD RLIKE CONCAT('[0-9]+[ -]?', w.word)
);

Тест можно найти здесь

...