[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Автоответчик
123456
Всем привет!

Может у кого есть идеи, как реализовать автоответчик??

Интересует сама структура БД и запросы к ней...


К примеру пользователь написал "Как дела?"

И запросом необходимо выбрать из бд ответ.... если ответа нет, то ничего не выбирать....


Я думаю создать две таблицы
Вопросы
id_вопроса | text_вопроса
------------------------------


и

Ответы
id_ответа | id_вопроса | id_текст ответа
----------------------------------------------



И каким-то образом искать вопросы по соответствующей таблице... Только вот каким образом лучше всего искать?
Миша
Тема из старой оперы wink.gif

Были такие игрушки в детстве, создавалась с нуля так:

если знак вопроса в конце предложения, значит записываем в таблицу как вопрос, если следующее сообщение без знака вопроса - значит это ответ. Но это программка с самообучением.

Ответ выбирается с наибольшим количеством совпадений слов в предложении и не забывай, что форма слова может меняться.

_____________
Принимаю заказы, писать в ЛС
123456
Надо вопрос по другому задать:

"Как сделать нечеткий поиск по таблице?"

Есть сообщение от пользователя

и есть таблица с всевозможными сообщениями(могут отличаться падежи, могут быть опечатки, разные знаки препинания и т.д.)

И надо найти сообщение в таблице... Если такое имеется
FatCat
Цитата (123456 @ 6.08.2016 - 17:44)
могут отличаться падежи, могут быть опечатки, разные знаки препинания и т.д.)

Дарю:
Функция отсекает окончания слов
function clean_y_value($v){
$v = strtolower($v);
if( strlen($v)>8 and in_array(substr($v,-6),array("овская","евская")) )$v = substr($v,0,-6);
elseif( strlen($v)>7 and in_array(substr($v,-5),array("аться","яться","иться","ается","яется","енный","енная","енное")) )$v = substr($v,0,-5);
elseif( strlen($v)>6 and in_array(substr($v,-4),array("ться","аюсь","яюсь","евый","ёвый","овый","овой","евая","ёвая","овая","евое","ёвое","овое","евые","ёвые","овые","ость","есть","йный","йная","ящий","ящая","ящие","вный","вная")) )$v = substr($v,0,-4);
elseif( strlen($v)>5 and in_array(substr($v,-3),array("ать","ять","ить","ого","оем","ому","ает","яет")) )$v = substr($v,0,-3);
elseif( strlen($v)>4 and in_array(substr($v,-2),array("ів","ам","ая","ее","ей","ий","ие","их","ию","ия","ми","ов","ое","ой","ок","ом","оя","ую","ые","ый","ых","ья","ям","ях","яя")) )$v = substr($v,0,-2);
elseif( strlen($v)>3 and in_array(substr($v,-1),array("a","e","i","а","е","и","й","о","у","ы","ь","ю","я","э")) )$v = substr($v,0,-1);
return $v;
}


_____________
Бесплатному сыру в дырки не заглядывают...
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.