У меня есть некоторые проблемы с моей функцией поиска. Когда какой-либо пользователь вводит предложения в поле поиска, я хочу получить результат по ключевым словам внутри предложения, которые пользователь вводил ранее. Например, у меня есть таблица базы данных, например:
ID | Keywords | Answer
-----------------------------------------------------------------------------
1 | price, room | The price room is $150 / night
2 | credit card | Yes, you could pay with credit card
3 | location | The Hotel location is in the Los Angeles
4 | how to, way to, book | You could pay with credit card or wire transfer
5 | room, size | The room size is 50sqm
И это примеры предложений, которые вводит пользователь:
Сколько стоит номер?
room and price
,Могу ли я оплатить с помощью кредитной карты?
credit card
,Какой размер комнаты?
room and size
,Пример 1 и 3 имеет room
в предложениях. Я также хотел бы знать, что ключевые слова room price
а также room size
,
Как я могу найти ключевые слова из предложений, которые уже введены пользователем?
Как получить ответ из базы данных с этими ключевыми словами?
Из этих примеров я хочу знать, как я могу сделать это с PHP и MySql? Или, может быть, есть какой-то способ построить это? Пожалуйста, кто-нибудь знает, чтобы сделать это могло бы помочь мне. Спасибо, прежде чем.
Я бы предложил не хранить ключевые слова, разделенные запятыми, в одной строке, а вставлять их в разные строки. Потому что, когда вы попытаетесь найти любой текст, который находится в ключевых словах, он всегда будет проверять credit card
или же price, room
, Он не будет рассматривать цену и номер как разные слова, а будет считать это строкой.
По вашему вопросу попробуйте следующий код:
$que = 'What is the room price';
$keywords = str_replace(" ", ",", $que);
$sql = 'select answer from your_table where keywords IN (' . $keywords . ')';
ИЛИ вы можете попробовать FIND_IN_SET () искать ключевые слова через запятую.
Это может сработать.
Мой подход состоит в том, чтобы использовать концепцию STOP WORDS, чтобы удалить все STOP WORDS из пользовательского запроса.
Тогда только искать ВСЕ КЛЮЧЕВЫЕ СЛОВА в пользовательском запросе.
Запись DATA должна удалить большинство пользовательских данных, чтобы быть надежной. Что делать, если они намерены сломать вашу систему, вставив код.
СТОП-СЛОВА включают » » ‘из’
Идея состоит в том, чтобы удалить как можно больше мусора, а затем быть очень разборчивым в отношении других слов.
Записать данные запроса для проверки в случае сбоя.
зарегистрируйте данные ACCESS, которые, по вашему мнению, вы обрабатываете
а затем установите тайм-аут на время ответа.
например. если вы знаете, что запрос должен принимать только
Х мс Тогда все, что занимает больше времени, чем подозрительно. Это могло бы пройти через ваш защитный слой. НЕОБХОДИМО убедиться, что вы записали IP-адрес и временную метку в файлы журнала — желательно прямо в начале записи журнала.
Затем напишите сценарии для обработки ломтика.
SLICE — это хороший способ помочь системным администраторам
кому, возможно, придется отправить вам часть файлов журнала.
Срез может быть сложным — от ДНЯ (ГГГГММДмм.с) до другого ДНЯ, и у них может быть запущена система сжатия в течение ночи — поэтому вашему сценарию необходим доступ к обычным файлам журнала и сжатым файлам журнала. Иногда файлы разбиты по системным сбоям — т.е. система умерла по какой-то причине.
Ваша информация SLICE может быть упакована в электронное письмо и т. Д. И отправлена вам для анализа.
Удачи.