Как я могу искать лучшее совпадение в моей таблице начиная с фразы, введенной пользователем?

Я имею таблицу с двумя полями и ста тысячами реестров возможных ответов по отношению к вопросу пользователя.

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

Пример был бы:

columna pregunta1 = * hola * como estas * 
columna respuesta1 = yo muy bien y tu.

columna pregunta1 = * como estas * amigo *
columna respuesta1 = yo bien gracias y tu.

frase del cliente= "hola que tal amigo como estas. podemos blablabla";

Поскольку они видят, первый вопрос моей базы данных совпадает больше с фразой клиента, что вторая, так как у них есть добавленный слово "друг".

Я попробовал создавать нечто похожее:

select "Hola max, como estás, te deseo feliz navidad" REGEXP ("[^*.][:como:][^*.][:est.*:][.*$]");

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

1
задан 26.03.2019, 19:58
1 ответ

Я рекомендую тебе не 'изобретать' твой собственный язык таких регулярных выражений как который ты используешь aquГ-:

* hola * como estas * 

, Так как в конце концов любой soluciГіn pasarГЎ из-за того, что "это обращает" в язык регулярных выражений mГЎs comГєn.

AsГ - так как, что harГ - в, так как тебе интересно сохранять mapeo вопросов с ответами в bbdd, serГ, - чтобы хранить вопросы уже с форматом регулярных выражений, вынесенным из-за mysql.

Для твоего случая кажется, что просто с \b и .* podrГ-схвати, приспосабливать вопросы

\b Значит барьер слова, а именно, что, если мы ищем \bpata\b encontrarГ-хозяев pata, но не patata

.* значит любой характер 0 или mГЎs разы

AsГ - так как, для примеров, которые ты поместил, они podrГ-схвати хранить asГ - в bbdd (имей в виду, что контрабруски должны убегать, когда вводится в bbdd)

\\bhola\\b.*\\bcomo estas\\b.*
\\bcomo estas\\b.*\\bamigo\\b

DespuГ©s, query quedarГ - во что-то asГ-:

select respuesta
from preguntas_respuestas
where regexp_like("como estas amigo bla bla",
                  pregunta);

у Тебя Есть demo aquГ - для того, чтобы ты видел cГіmo, функционирует

В конце концов, тебя присоединила documentaciГіn где podrГЎs оказываться синтаксис допущенным из-за mysql в регулярных выражениях.

С регулярными выражениями, вынесенными из-за mysql, podrГ-схвати делать успехи с твоими обязательными условиями. Если в algГєn момент у тебя остается коротким, podrГ-схвати думать о том, чтобы использовать MariaDB вместо mysql. MariaDB выносит PCRE (Регулярный Перл Компатибле Expressions), с которым podrГ, - чтобы получать bГєsquedas главных файлов mГЎs сложные.

В конце концов, комментировать, что, когда ты введешь вопросы в bbdd, какие-то символы tendrГЎn, что убегать заблаговременно.

Например, если ты вводишь вопрос Hola., и искать Hola! ты это encontrarГ - в, потому что точка . в регулярных выражениях значит любой характер. AsГ - который во время сохранения вопроса deberГ-схвати guadarla asГ-: Hola\.

1
ответ дан 03.12.2019, 03:29