Program-O 聊天机器人自动完成

Program-O Chatbot Autocomplete

我在 Program-o chatbot 的基础上进行开发,在大多数情况下,它运行良好。

  1. 我正在尝试根据机器人从 AIML 定义中已知的信息让 "say" 输入字段自动完成。
  2. 我的问题是我不知道他们的 logic/SQL 如何确定返回的内容,以便我构建 SQL 让自动完成功能发挥作用。
  3. 我正在使用JSON / jQuery version of the chatbot and have made no core changes to the code. Jquery and jQuery UI CDN libraries (for the autocomplete JS) have been added. The autocomplete code is from David Carr

感谢您提供的任何帮助!

//I added autocomplete JS within index.php

    $(function() {

        //autocomplete
        $(".auto").autocomplete({
            source: "search.php",
            minLength: 1
        });                

    });

//Search.php included within index.php

<?php
define('DB_SERVER', 'localhost');
define('DB_USER', 'root');
define('DB_PASSWORD', 'root');
define('DB_NAME', 'demo');

if (isset($_GET['say'])){
    $return_arr = array();

    try {
        $conn = new PDO("mysql:host=".DB_SERVER.";port=8889;dbname=".DB_NAME, DB_USER, DB_PASSWORD);
        $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

        $stmt = $conn->prepare('SELECT something FROM someTable WHERE something LIKE :say');
        $stmt->execute(array('term' => '%'.$_GET['term'].'%'));

        while($row = $stmt->fetch()) {
            $return_arr[] =  $row['something'];
        }

    } catch(PDOException $e) {
        echo 'ERROR: ' . $e->getMessage();
    }

    /* Toss back results as json encoded array. */
    echo json_encode($return_arr);
}

?>

我没有正确处理这个问题。您可以执行如下查询。确保包含 jQuery UI CSS 和 JS 文件才能正常工作。最后,下面的脚本不显示表单本身,但确保您有一个带有 id = "say" 的输入才能正常工作。更好的答案表示赞赏,但这是我能够想出的。谢谢

//Main File / index.php etc
<script>
$(function() {
    $( "#say" ).autocomplete({
       source: "search.php",
       minLength: 1
    });
});
</script>


//search.php
<?php
$host="localhost";
$username="uid";
$password="pwd";
$dbname="name";

//create a connection with dbname
$conn=mysqli_connect($host,$username,$password,$dbname);
if(!$conn)
{
 die("error in establishing connection: ". mysqli_connect_error());
}

$search=$_GET['term'];

//select query to get data from table
$sql="SELECT pattern from aiml WHERE pattern LIKE '%".$search."%'";

//run the above query
$result=mysqli_query($conn,$sql);

//display all the records
while($row=mysqli_fetch_assoc($result))
{
 //storing all the values of 'post_title' field one by one in an array
 $data[]=$row['pattern'];
}

//return json data
echo json_encode($data);
?>