Я пытаюсь сделать обратный полный тестовый поиск, но понятия не имею, как лучше всего это сделать.
По сути, у меня есть таблица ключевых фраз, выложенная так:
id - фраза
1 - "Привет, мир"
2 - «Прощай, мир»
3 - «Это мой мир»
Затем у меня есть заданная строка, такая как "Welcome to hello world group". Я хочу найти идентификатор всех строк в моей таблице, которые точно соответствуют фразе. Значение «о» не будет соответствовать, потому что слово «к». Также «ello» не подходит, потому что мир «hello».
Используя полнотекстовый поиск, этого легко достичь, выполнив поиск:
ПРОТИВ («Привет, мир» в булевом режиме);
Проблема в том, что я не верю, что могу использовать полнотекстовый поиск, так как полнотекстовый поиск найдет все строки, содержащие одну фразу. Я хочу, чтобы все фразы (из известного набора фраз) соответствовали одному набору.
Я знаю, как это сделать с помощью RegEx, используя следующее, однако это способ замедления. На столе с 400 000 ключевых фраз это заняло более 40 секунд:
ГДЕ "здесь находятся данные, которые я хочу найти" REGEXP CONCAT ('[[: <:]]', <code>phrases, '[[:>:]]')
Мне нужен более оптимизированный способ сделать это. Как бы я мог выполнить это как полнотекстовый поиск, даже если бы мне пришлось временно добавить его в таблицу, не выполняя LOOP, отдельно проверяя каждое ключевое слово.
Я очень ценю отзывы, так как это приводит к задержке при добавлении новых данных на моем сайте.