接上篇elasticsecrchi 进行搜索及时提示,数据库以及后台代码

-- ----------------------------
-- Table structure for articles
-- ----------------------------
DROP TABLE IF EXISTS `articles`;
CREATE TABLE `articles` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`title` varchar(200) NOT NULL COMMENT ‘标题‘,
`content` text COMMENT ‘内容‘,
PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=8 DEFAULT CHARSET=utf8;

-- ----------------------------
-- Records of articles
-- ----------------------------
INSERT INTO `articles` VALUES (‘1‘, ‘Laravel 测试1‘, ‘Laravel 测试文章内容1‘);
INSERT INTO `articles` VALUES (‘2‘, ‘Laravel 测试2‘, ‘Laravel 测试文章内容2‘);
INSERT INTO `articles` VALUES (‘3‘, ‘Laravel 测试3‘, ‘Laravel 测试文章内容3‘);
INSERT INTO `articles` VALUES (‘4‘, ‘Laravel 测试4‘, ‘Laravel 测试文章内容4‘);
INSERT INTO `articles` VALUES (‘5‘, ‘Laravel 测试5‘, ‘Laravel 测试文章内容5‘);
INSERT INTO `articles` VALUES (‘6‘, ‘Laravel 测试6‘, ‘Laravel 测试文章内容6‘);
INSERT INTO `articles` VALUES (‘7‘, ‘Laravel 测试7‘, ‘Laravel 测试文章内容7‘);

后台代码

<?php
namespace app\index\controller;
use think\Db;
use think\Config;
//引入es搜索类
//require ‘./vendor/autoload.php‘;
use Elasticsearch\ClientBuilder;

use think\Controller;
use think\Request;

class Index extends Controller
{
    public function index()
    {

        return $this->fetch();

    }

    public function getsearch(){

        $client = ClientBuilder::create()->build();
        $keys = Request::instance()->param(‘keyword‘);
        $keys = $keys ? $keys : ‘测试‘;
        $params = [
            ‘index‘ => ‘article_index‘,
            ‘type‘ => ‘article_type‘,
            ‘body‘ => [
                ‘query‘ => [
                    ‘match‘ => [
                        ‘content‘ => $keys
                    ]
                ]
            ]
        ];
        $response = $client->search($params);
        $str = ‘‘;
        $list = $response[‘hits‘][‘hits‘];
        //pp($list);die;
        $str .= ‘<script src="https://cdn.staticfile.org/jquery/1.10.2/jquery.min.js"></script>
                <!-- 最新版本的 Bootstrap 核心 CSS 文件 -->
                <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/[email protected]/dist/css/bootstrap.min.css">
                <!-- 最新的 Bootstrap 核心 JavaScript 文件 -->
                <script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/js/bootstrap.min.js"></script>‘;

        $str .= ‘<table class="table table-hover">
                  <thead>
                    <tr>
                      <th>id</th>
                      <th>title</th>
                      <th>content</th>
                    </tr>
                  </thead>
                  <tbody>‘;

        foreach ($list as $k => $v) {
            $str .= ‘<tr><td>‘ . $v[‘_source‘][‘id‘] . ‘</td><td>‘ . $v[‘_source‘][‘title‘] . ‘</td><td>‘ . $v[‘_source‘][‘content‘] . ‘</td></tr>‘;
        }
        $str .=‘</tbody></table>‘;
        return $str;

    }

    public function search() {

        /*$client = ClientBuilder::create()->setHosts($hosts)->build();*/
        //实例化es类;在项目中引入自动加载文件,并且实例化一个客户端:
        $client = ClientBuilder::create()->build();

        $keys = Request::instance()->param(‘keyword‘);
        $keys = $keys ? $keys : ‘6‘;
        $params = [
            ‘index‘ => ‘article_index‘,
            ‘type‘ => ‘article_type‘,
            ‘body‘ => [
                ‘query‘ => [
                    ‘match‘ => [
                        ‘content‘ => $keys
                    ]
                ]
            ]
        ];
        $response = $client->search($params);
         return json($response[‘hits‘][‘hits‘]);
        //pp($response[‘hits‘][‘hits‘]);
        die;

      try {
       //将文档加入索引
       //echo ClientBuilder::$aaa;
      // $data = db::name(‘articles‘)->select();
       //查询出多条数据添加索引
       /*foreach ($data as $k => $v) {

               $params = [
                ‘index‘ => ‘article_index‘,//数据库名
                ‘type‘ => ‘article_type‘,//表名
                ‘id‘ => ‘article_‘ . $v[‘id‘],//主键
                ‘body‘ => [
                            ‘id‘ => $v[‘id‘],
                            ‘title‘ => $v[‘title‘],
                            ‘content‘ => $v[‘content‘],
                          ],
            ];
            $response = $client->index($params);

       }
*/
       //从索引中获取文档
      /* $getparams = [
          ‘index‘ => ‘article_index‘,
          ‘type‘ => ‘article_type‘,
          ‘id‘ => ‘article_1‘
        ];
        $res = $client->get($getparams);*/

        //从索引中删除文档
        /*$delparams = [
          ‘index‘ => ‘article_index‘,
          ‘type‘ => ‘article_type‘,
          ‘id‘ => ‘article_1‘
        ];
        $res = $client->delete($delparams);
*/
        //删除索引
        /*$params = [
            ‘index‘ => ‘articles_index‘
        ];
        $res = $client->indices()->delete($params);
        print_r($res);*/

        //搜索
        /*$serparams = [
          ‘index‘ => ‘article_index‘,
          ‘type‘ => ‘article_type‘,
        ];      

        $serparams[‘body‘][‘query‘][‘match‘][‘content‘] = $_POST[‘keyword‘];
        $resech = $client->search($serparams);*/

        //pp($resech);

        // pp($data);
        } catch (Exception $e) {
            echo $e->getMessage();
        }
    }

      public function savesearchlog() {
          return ‘111111‘;
      }

}

原文地址:https://www.cnblogs.com/yszr/p/10285357.html

时间: 2024-10-28 08:08:57

接上篇elasticsecrchi 进行搜索及时提示,数据库以及后台代码的相关文章

搜索输入框提示--输入延迟,仿自动脑学院

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Document</title> <script src='../node_modules/jquery/dist/jquery.min.js'></script> <style> html, body { font-fa

百度搜索自动提示搜索相关内容----模拟实现

最近做项目,在和user 洽谈时,在输内容时提示数据库已存在的相似内容,也就是模糊匹配.怎么实现这个功能呢? 当然现在软件开发都是讲究高效,开发周期短,第一个想的是又没相似的控件可以实现这种效果,在搜索的时候,发现百度搜.google搜不是正是我需要的效果的吗?本着专业的思想,按下了F12. 发现了这个: 想去百度的同学,抓紧了,我也要赶紧准备准备了... 1 <span class="bg s_ipt_wr"><input id="kw" nam

**IOS自动完成(搜索自动提示)功能实现

UISearchBar搜索AutoComplete下拉列表搜索提示 http://www.codeios.com/thread-10685-1-1.html 介绍: 在搜索框上加入下拉列表.在搜索框上面输入文字时,出现下拉列表,可以用作搜索自动提示. 测试环境: [Code4App]编译测试,测试环境:Xcode 4.3, iOS 5.0. http://code4app.com/ios/Drop-Down-List/5002d3706803faf208000000

“百度搜索框提示”代码

使用方法: 百度提供了2种自定义调用的方法方法一: 第一步为需要添加“百度搜索框提示”功能的<input>标签添加baiduSug属性.例如:<input type=”text” name=”word” baiduSug=”1|2″>当设置baiduSug=1时,用户选中sug词条时默认执行表单提交动作:当设置baiduSug=2时,用户选中sug词条时不执行表单提交动作.       第二步      在网页中引入Javascript文件: <script charset=

站长工具|百度搜索框提示功能

百度向站长开放免费“百度搜索框”代码和“百度搜索框提示”代码.只需进行简单的设置, 即可将“ 百度搜索框( 带提示功能)”功能快速加入到您的网页中.提升用户在网站中的搜索体验. 根据不同类型的网站需求,站长工具一共提供三种引入方式供您选择: 简单方式——方便的将“百度搜索框(带提示功能)”直接加入到您的网页中.将以下代码加入到您的网页中,即可获得带有“搜索框提示”功能的百度搜索框 HTML代码: <form action=”http://www.baidu.com/baidu” target=”

JQuery AutoComplete搜索智能提示

首先需要引入的文件有: jquery-ui-1.10.4.custom.min.cssjquery-ui-1.10.4.custom.min.js 然后在后台组织json格式的数据,组织成一个list型数据String id;String label;String value; 如: var availableTagsJSON = [ { label: "C#", value: "C#", id: "1" }, { label: "C+

百度搜索框提示

方法一: 第一步 为需要添加“百度搜索框提示”功能的<input>标签添加baiduSug属性.例如:<input type=”text” name=”word” baiduSug=”1|2″> 当设置baiduSug=1时,用户选中sug词条时默认执行表单提交动作: 当设置baiduSug=2时,用户选中sug词条时不执行表单提交动作. 第二步 在网页中引入Javascript文件:<script charset=”gbk” src=”http://www.baidu.co

帝国cms数据还原后提示数据库表不存在怎么解决?

下午,ytkah用帝国cms在wamp调试时发现了一个问题,还原备份好的数据后更新的页面提示数据库表不存在,查看了phpmyadmin分类的数据库表实际上是存在的,这个是怎么回事呢?重新搭建一个新站点还是这种情况. 在热心网友的帮助下总算知道原因了,原来是文件权限没设置好,e/data目录下文件权限要设置为读写权限,然后再更新数据库缓存,果然可以了

sql server 还原数据库后,删除用户,提示数据库主体在该数据库中拥有架构,无法删除解决方法

将另一台服务器上的数据库备份文件,在现在用的这台服务器上还原之后,再创建相同的用户名,提示用户已存在 想将之前的用户先删除掉,却提示“数据库主体在该数据库中拥有架构,无法删除解决方法” 在网上找到方法,试了一下,还真管用. --执行如下SQL语句 ALTER AUTHORIZATION ON SCHEMA::db_owner TO dbo; --然后手动删除就可以了 我看还原后的数据库中的db_owner架构所有者就是那个要删除的用户名,再看其他数据库中的db_owner架构的所有者就是db_o