成人性生交大片免费看视频r_亚洲综合极品香蕉久久网_在线视频免费观看一区_亚洲精品亚洲人成人网在线播放_国产精品毛片av_久久久久国产精品www_亚洲国产一区二区三区在线播_日韩一区二区三区四区区区_亚洲精品国产无套在线观_国产免费www

主頁 > 知識庫 > Laravel + Elasticsearch 實現(xiàn)中文搜索的方法

Laravel + Elasticsearch 實現(xiàn)中文搜索的方法

熱門標(biāo)簽:山西回?fù)芡夂粝到y(tǒng) 騰訊外呼管理系統(tǒng) 岳陽外呼型呼叫中心系統(tǒng)在哪里 百應(yīng)電話機器人服務(wù) 揚州地圖標(biāo)注app 山西探意電話機器人 河南電銷卡外呼系統(tǒng)哪家強 青島語音外呼系統(tǒng)招商 昭通辦理400電話

Elasticsearch

Elasticsearch 是一個基于 Apache Lucene(TM) 的開源搜索引擎,無論在開源還是專有領(lǐng)域,Lucene可 以被認(rèn)為是迄今為止最先進、性能最好的、功能最全的搜索引擎庫。

但是,Lucene 只是一個庫。想要發(fā)揮其強大的作用,你需使用 Java 并要將其集成到你的應(yīng)用中。Lucene 非常復(fù)雜,你需要深入的了解檢索相關(guān)知識來理解它是如何工作的。

Elasticsearch 也是使用 Java 編寫并使用 Lucene 來建立索引并實現(xiàn)搜索功能,但是它的目的是通過簡單連貫的 RESTful API 讓全文搜索變得簡單并隱藏 Lucene 的復(fù)雜性。

不過,Elasticsearch 不僅僅是 Lucene 和全文搜索引擎,它還提供:

  • 分布式的實時文件存儲,每個字段都被索引并可被搜索
  • 實時分析的分布式搜索引擎
  • 可以擴展到上百臺服務(wù)器,處理PB級結(jié)構(gòu)化或非結(jié)構(gòu)化數(shù)據(jù)

而且,所有的這些功能被集成到一臺服務(wù)器,你的應(yīng)用可以通過簡單的 RESTful API、各種語言的客戶端甚至命令行與之交互。上手 Elasticsearch 非常簡單,它提供了許多合理的缺省值,并對初學(xué)者隱藏了復(fù)雜的搜索引擎理論。它開箱即用(安裝即可使用),只需很少的學(xué)習(xí)既可在生產(chǎn)環(huán)境中使用。

Elasticsearch 在 Apache 2 license 下許可使用,可以免費下載、使用和修改。

ElasticSearch 安裝

在 Laradock 中已經(jīng)集成了 ElasticSearch。我們可以直接使用:

docker-compose up -d elasticsearch

如果需要安裝插件,執(zhí)行命令:

docker-compose exec elasticsearch /usr/share/elasticsearch/bin/elasticsearch-plugin install {plugin-name}

// 重啟容器
docker-compose restart elasticsearch

注:

The vm.max_map_count kernel setting must be set to at least 262144 for production use.

由于我是 centos 7 環(huán)境,直接設(shè)置在系統(tǒng)設(shè)置:
sysctl -w vm.max_map_count=262144

默認(rèn)用戶名和密碼:「elastic」、「changeme」,端口號:9200

ElasticHQ

ElasticHQ is an open source application that offers a simplified interface for managing and monitoring Elasticsearch clusters.

Management and Monitoring for Elasticsearch.

http://www.elastichq.org/

  • Real-Time Monitoring
  • Full Cluster Management
  • Full Cluster Monitoring
  • Elasticsearch Version Agnostic
  • Easy Install - Always On
  • Works with X-Pack

輸入我們的 Elasticsearch Host,即可進入后臺。

默認(rèn)的創(chuàng)建了:

一個集群 cluster:laradock-cluster
一個節(jié)點 node:laradock-node
一個索引 index:.elastichq

IK 分詞器安裝

ElasticSearch 主要是用于自己 blog 或者公眾號文章的搜索使用,所以需要選擇一個中文分詞器配合使用,這里剛開始推薦使用 IK 分詞器,下面開始安裝對應(yīng) ElasticSearch版本 (7.5.1) 一致的插件:

https://github.com/medcl/elasticsearch-analysis-ik/releases

// 安裝插件
docker-compose exec elasticsearch /usr/share/elasticsearch/bin/elasticsearch-plugin install https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v7.5.1/elasticsearch-analysis-ik-7.5.1.zip

注:可以將 zip 文件先下載回來,然后再安裝,速度會快些。

檢驗分詞效果

根據(jù) Elasticsearch API 測試,分詞的效果達(dá)到了:

 ~ curl -X POST "http://your_host/_analyze?pretty" -H 'Content-Type: application/json' -d'
{
 "analyzer": "ik_max_word",
 "text":   "我是中國人"
}
'

{
 "tokens" : [
  {
   "token" : "我",
   "start_offset" : 0,
   "end_offset" : 1,
   "type" : "CN_CHAR",
   "position" : 0
  },
  {
   "token" : "是",
   "start_offset" : 1,
   "end_offset" : 2,
   "type" : "CN_CHAR",
   "position" : 1
  },
  {
   "token" : "中國人",
   "start_offset" : 2,
   "end_offset" : 5,
   "type" : "CN_WORD",
   "position" : 2
  },
  {
   "token" : "中國",
   "start_offset" : 2,
   "end_offset" : 4,
   "type" : "CN_WORD",
   "position" : 3
  },
  {
   "token" : "國人",
   "start_offset" : 3,
   "end_offset" : 5,
   "type" : "CN_WORD",
   "position" : 4
  }
 ]
}

結(jié)合 Laravel

雖然 Elasticsearch 官方提供了對應(yīng)的 PHP 版本的插件,但我們還是希望和 Laravel 結(jié)合的更緊密些,所以這里選擇和 Scout 結(jié)合使用,具體用到了 tamayo/laravel-scout-elastic 插件。

composer require tamayo/laravel-scout-elastic
 
composer require laravel/scout
 
php artisan vendor:publish

選擇:Laravel\Scout\ScoutServiceProvider

修改驅(qū)動為 elasticsearch

'driver' => env('SCOUT_DRIVER', 'elasticsearch'),

創(chuàng)建索引

創(chuàng)建索引有幾種方法,其中可以使用 Ela 可視化工具 ElasticHQ 直接創(chuàng)建。

接下來我們需要更新這個索引,補充 Mappings 這部分,可以用 Postman。

另一種方法是用 Laravel 自帶的 Artisan 命令行功能。

這里我們推薦使用 Artisan 命令行。
php artisan make:command ESOpenCommand

根據(jù)官網(wǎng)提示,我們可以在 ESOpenCommand 上向 Elasticsearch 服務(wù)器發(fā)送 PUT 請求,這里借助 Elasticsearch 提供的 PHP 插件,在我們使用 tamayo/laravel-scout-elastic 插件時,已經(jīng)安裝了 Elasticsearch PHP 插件:

下面就可以借助插件,創(chuàng)建我們的 Index,直接看代碼:

 public function handle()
  {
  $host = config('scout.elasticsearch.hosts');
  $index = config('scout.elasticsearch.index');
  $client = ClientBuilder::create()->setHosts($host)->build();

  if ($client->indices()->exists(['index' => $index])) {
    $this->warn("Index {$index} exists, deleting...");
    $client->indices()->delete(['index' => $index]);
  }

  $this->info("Creating index: {$index}");

  return $client->indices()->create([
    'index' => $index,
    'body' => [
      'settings' => [
        'number_of_shards' => 1,
        'number_of_replicas' => 0
      ],
      'mappings' => [
        '_source' => [
          'enabled' => true
        ],
        'properties' => [
          'id' => [
            'type' => 'long'
          ],
          'title' => [
            'type' => 'text',
            'analyzer' => 'ik_max_word',
            'search_analyzer' => 'ik_smart'
          ],
          'subtitle' => [
            'type' => 'text',
            'analyzer' => 'ik_max_word',
            'search_analyzer' => 'ik_smart'
          ],
          'content' => [
            'type' => 'text',
            'analyzer' => 'ik_max_word',
            'search_analyzer' => 'ik_smart'
          ]
        ],
      ]
    ]
  ]);
}

好了,我們執(zhí)行 Kibana 看到我們已經(jīng)創(chuàng)建好了 Index:

注 Kibana 本地 Docker 安裝:

后續(xù)會重點說明 Kibana 如何使用

docker run -d --name kibana -e ELASTICSEARCH_HOSTS=http://elasticsearch_host -p 5601:5601 -e SERVER_NAME=ki.test kibana:7.5.2

為了驗證 Index 是否可用,可以插入一條數(shù)據(jù)看看:

curl -XPOST your_host/coding01_open/_create/1 -H 'Content-Type:application/json' -d'
{"content":"中韓漁警沖突調(diào)查:韓警平均每天扣1艘中國漁船"}

可以通過瀏覽器看看對應(yīng)的數(shù)據(jù):

有了 Index,下一步我們就可以結(jié)合 Laravel,導(dǎo)入、更新、查詢等操作了。

Laravel Model 使用

Laravel 框架已經(jīng)為我們推薦使用 Scout 全文搜索,我們只需要在 Article Model 加上官方所說的內(nèi)容即可,很簡單,推薦大家看 Scout 使用文檔:https://learnku.com/docs/laravel/6.x/scout/5191,下面直接上代碼:

?php

namespace App;

use App\Tools\Markdowner;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\SoftDeletes;
use Laravel\Scout\Searchable;

class Article extends Model
{
  use Searchable;

  protected $connection = 'blog';
  protected $table = 'articles';
  use SoftDeletes;

  /**
   * The attributes that should be mutated to dates.
   *
   * @var array
   */
  protected $dates = ['published_at', 'created_at', 'deleted_at'];

  /**
   * The attributes that are mass assignable.
   *
   * @var array
   */
  protected $fillable = [
    'user_id',
    'last_user_id',
    'category_id',
    'title',
    'subtitle',
    'slug',
    'page_image',
    'content',
    'meta_description',
    'is_draft',
    'is_original',
    'published_at',
    'wechat_url',
  ];

  protected $casts = [
    'content' => 'array'
  ];

  /**
   * Set the content attribute.
   *
   * @param $value
   */
  public function setContentAttribute($value)
  {
    $data = [
      'raw' => $value,
      'html' => (new Markdowner)->convertMarkdownToHtml($value)
    ];

    $this->attributes['content'] = json_encode($data);
  }

  /**
   * 獲取模型的可搜索數(shù)據(jù)
   *
   * @return array
   */
  public function toSearchableArray()
  {
    $data = [
      'id' => $this->id,
      'title' => $this->title,
      'subtitle' => $this->subtitle,
      'content' => $this->content['html']
    ];

    return $data;
  }

  public function searchableAs()
  {
    return '_doc';
  }
}

Scout 提供了 Artisan 命令 import 用來導(dǎo)入所有已存在的記錄到搜索索引中。

php artisan scout:import "App\Article"

看看 Kibana,已存入 12 條數(shù)據(jù),和數(shù)據(jù)庫條數(shù)吻合。

有了數(shù)據(jù),我們可以測試看看能不能查詢到數(shù)據(jù)。

還是一樣的,創(chuàng)建一個命令:

class ElasearchCommand extends Command
{
  /**
   * The name and signature of the console command.
   *
   * @var string
   */
  protected $signature = 'command:search {query}';

  /**
   * The console command description.
   *
   * @var string
   */
  protected $description = 'Command description';

  /**
   * Create a new command instance.
   *
   * @return void
   */
  public function __construct()
  {
    parent::__construct();
  }

  /**
   * Execute the console command.
   *
   * @return mixed
   */
  public function handle()
  {
    $article = Article::search($this->argument('query'))->first();
    $this->info($article->title);
  }
}

這是我的 titles,我隨便輸入一個關(guān)鍵字:「清單」,看是否能搜到。

總結(jié)

整體完成了:

  • Elasticsearch 安裝;
  • Elasticsearch IK 分詞器插件安裝;
  • Elasticsearch 可視化工具 ElasticHQ 和 Kibana 的安裝和簡單使用;
  • Scout 的使用;
  • Elasticsearch 和 Scout 結(jié)合使用。

接下來就要將更多的內(nèi)容存入 Elasticsearch 中,為自己的 blog、公眾號、自動化搜索等場景提供全文搜索。

參考

推薦一個命令行應(yīng)用開發(fā)工具——Laravel Zero

Artisan 命令行 https://learnku.com/docs/laravel/6.x/artisan/5158

Scout 全文搜索 https://learnku.com/docs/laravel/6.x/scout/5191

How to integrate Elasticsearch in your Laravel App – 2019 edition https://madewithlove.be/how-to-integrate-elasticsearch-in-your-laravel-app-2019-edition/

Kibana Guide https://www.elastic.co/guide/en/kibana/index.html

elasticsearch php-api [https://www.elastic.co/guide/en/elasticsearch/client/php-api/current/index.html](https://www.elastic.co/guide/en/elasticsearch/client/php-api/current/index.html)

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

您可能感興趣的文章:
  • Python操作Elasticsearch處理timeout超時
  • es(elasticsearch)整合SpringCloud(SpringBoot)搭建教程詳解
  • python中的Elasticsearch操作匯總
  • 使用postman操作ElasticSearch的方法

標(biāo)簽:銅川 湛江 婁底 黃南 鎮(zhèn)江 南陽 宜賓 寶雞

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《Laravel + Elasticsearch 實現(xiàn)中文搜索的方法》,本文關(guān)鍵詞  Laravel,Elasticsearch,實現(xiàn),中文,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《Laravel + Elasticsearch 實現(xiàn)中文搜索的方法》相關(guān)的同類信息!
  • 本頁收集關(guān)于Laravel + Elasticsearch 實現(xiàn)中文搜索的方法的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    亚洲美女自拍视频| 日韩av在线资源| 国模大胆一区二区三区| 欧美三级伦理在线| 福利资源在线观看| 欧美xxxx性xxxxx高清视频| 一区二区欧美在线| 欧美视频网址| 欧美草逼视频| 亚洲国产成人在线| 天天摸天天操天天干| 亚洲男人的天堂一区二区| 九九热视频在线观看| 亚洲av毛片在线观看| 欧美精品久久99久久在免费线| 一区二区三区四区激情| 欧美在线 | 亚洲| 污视频网站在线看| 国内欧美视频一区二区| www.欧美亚洲| 综合久久综合| 日韩视频在线观看视频| 成人免费毛片在线观看| 国精品日韩欧美一区二区三区| 久久成人免费观看| 激情综合五月| 精品国产视频一区二区三区| 91精品一区国产高清在线gif| 国产精品美女久久久久av爽李琼| 在线观看国产精品日韩av| 欧美丰满美乳xxx高潮www| 在线不卡欧美| 国产精品国产精品| 久草免费新视频| 亚洲一区在线直播| www.日本在线视频| 欧美freesex8一10精品| 男男电影完整版在线观看| 亚洲大胆视频| 亚洲大肥女ass| 青青草国产精品亚洲专区无| 亚洲伦理一区二区| 男女毛片免费视频看| 国产精品99久久99久久久二8| 亚洲国产成人av网| 国产乱码精品一区二区三区中文| 国产传媒视频在线观看| 91成人抖音| av一区二区三区免费| 黑人巨大精品欧美一区二区免费| 亚洲伦在线观看| 国产精品视频白浆合集| 欧美激情高清视频| 欧美丰满熟妇bbbbbb百度| 人人在线97| 午夜电影一区二区| 亚洲精选国产| 亚洲影院在线| 婷婷综合在线视频| 99久久夜色精品国产亚洲1000部| 福利小视频网站| av中文字幕一区二区三区| 爱福利视频一区二区| 亚洲欧美成人一区二区三区| 国产图片综合| 先锋成人影院| 国产精品乱码久久久久久| 激情深爱一区二区| 在线观看一二三区| 国产精品一线| 亚洲视频日韩| 日韩三级影视| 国产在线麻豆精品| 日韩视频在线免费观看| 伊人久久中文字幕| 日日骚av一区| 久久久久久久久精| 欧美一级二级三级蜜桃| 91精品国产综合久久精品app| 538任你躁精品视频网免费| 国产女主播在线| 91在线免费视频| 亚洲欧洲在线观看| 456成人影院在线观看| 91免费国产精品| av在线免费网址| 亚洲精品乱码久久久久久自慰| 99视频精品全部免费看| 97超级碰在线看视频免费在线看| 亚洲经典一区二区三区| 又黄又湿又爽又免费又色| 欧美xxxxxxxxx| 99热超碰在线| 你懂得在线视频| 亚洲日本韩国一区| 日韩极品在线| 户外露出精品视频国产| 国产精品乱看| 无码少妇一区二区三区| 色婷婷免费视频| 四虎精品一区二区| 老司机免费视频久久| 国产精品中文久久久久久| 一起操在线观看| 中文精品99久久国产香蕉| 激情欧美一区二区三区| 欧美特级特黄aaaaaa在线看| 69精品小视频| 四虎影院在线免费播放| 欧美一区二区三区黄片| 成人性色生活片免费看爆迷你毛片| 成人97在线观看视频| 可以免费观看av的网站| 国产精品va无码一区二区三区| 亚洲va欧美va在线观看| 少妇一级淫片免费放播放| 欧美一区二区激情| 亚州一区二区| 欧美a级在线观看| 中文字幕成人| 熟女丰满老熟女熟妇| www.亚洲在线| 国产又爽又黄又刺激的软件| 免费看ww视频网站入口| 欧美精品一级二级三级| 欧美高清视频不卡网| 亚洲二区精品| 亚洲美女视频在线观看| 性爽视频在线| 中文乱码人妻一区二区三区视频| 日本免费一区二区视频| 国产精品探花在线观看| 日韩精品一区二区三区中文不卡| 国产成人精品免费一区二区| 亚洲品质自拍| 91精品国产丝袜白色高跟鞋| 日韩和欧美一区二区三区| 亚洲成a天堂v人片| 国产成人精品福利| 欧美成人毛片| 最新国产精品拍自在线播放| 免费观看又色又爽又黄的网站| 九色porny自拍视频| 亚洲va久久| 国产精品h在线观看| 欧美绝顶高潮抽搐喷水合集| 传媒在线观看| 欧洲成人一区二区| 国产精品一区二区免费看| 97精品人妻一区二区三区蜜桃| 日韩美一区二区| 国产91精品精华液一区二区三区| 国内精品一区视频| 一本色道久久99精品综合| 黑鬼狂亚洲人videos| 97免费在线视频| 色av综合在线| 日日狠狠久久偷偷综合色| 美女av电影| 一色桃子av在线| 黄色在线免费观看网站| 美女黄色片视频| 中文字幕日韩一区二区三区不卡| 丰满少妇乱子伦精品看片| 熟年交尾五十路视频在线播放| 久久国产电影| 精品国产亚洲一区二区三区在线| 日日摸日日碰夜夜爽无码| 欧美黄色一级片视频| 清纯唯美亚洲激情| 国产嫩bbwbbw高潮| 男女啪啪网站| 欧美精品一区二区三区蜜桃视频| 亚洲国产高清aⅴ视频| 捆绑变态av一区二区三区| 91成人精品网站| 亚洲伊人影院| 欧美精品尤物在线| 久久久久久国产精品mv| 免费av一区| 亚洲第一精品自拍| 国产xxxxhd| 亚洲视频在线观看三级| 97人妻精品一区二区三区| 国产suv精品一区二区| 欧美不卡123| 国产午夜精品全部视频在线播放| 亚洲精品免费看| 欧美乱大交xxxxx另类电影| 激情网址大全| 色综合久久久久久久久五月| 国产精品天美传媒沈樵| 欧美日韩亚洲一区二区三区在线观看| 成人线上播放| 91精品国产欧美日韩| 欧美精品a∨在线观看不卡| 国产馆在线观看| 玖玖爱在线精品视频| 亚洲欧美日韩国产中文在线| 天天av天天翘| 亚洲精品在线播放视频| 精品国产乱码| 在线观看精品视频一区二区三区| 91精品视频在线看| 国产精品合集一区二区| 高清欧美性猛交| av女优在线播放| 国产精品日韩精品中文字幕| 国产精品老女人| 久久久久午夜电影| 亚洲超碰在线| 青青艹视频在线| 超级碰碰视频| 欧美另类z0zxhd电影| 嘿嘿视频在线观看| 午夜精品在线观看| 国产精品社区| 亚洲国产婷婷香蕉久久久久久| 中文字幕一区二区5566日韩| 亚洲欧美色图视频| 日韩情爱电影在线观看| 不许穿内裤随时挨c调教h苏绵| 欧美视频精品全部免费观看| 一起草av在线| 国产精品福利在线观看| 成人午夜av影视| 另类视频欧美| 国产乱码精品一区二区三区日韩精品| 国产一级久久久| 亚洲成av人片| 水中色av综合| 91精品国产自产在线老师啪| 成人动态视频| 污视频在线免费观看网站| 韩日精品视频一区| 97精品在线观看| 外国成人激情视频| 欧美国产一区视频在线观看| 国产三区精品| 一本久久综合亚洲鲁鲁五月天| 在线播放日韩| 国产乱码久久久久| 俄罗斯毛片基地| 国产欧美日韩精品丝袜高跟鞋| 狠狠爱免费视频| 国产一区二区美女视频| 免费黄色一级大片| 亚洲成人精品在线观看| 今天免费高清在线观看国语| 免费在线观看av电影| 羞羞网站在线观看| 操喷在线视频| 欧美激情一区二区久久久| 国产精品九九九九九九| 国产精九九网站漫画| 色呦呦在线免费观看| 中文字幕第五页| 伊人22222| 国产69精品久久久久99| 亚洲av成人无码一二三在线观看| 婷婷丁香激情综合| 中文字幕中文字幕中文字幕亚洲无线| 日本理论片2828理论片| 性一交一乱一精一晶| 亚洲理伦在线| 中文字幕日韩欧美在线视频| 久久黄色影视| 污污网站在线观看视频| 亚洲自拍偷拍一区二区| 色国产在线视频| 国产精品三级在线| 在线播放av片| 天天骑天天干| 日韩在线免费av| 日韩亚洲欧美成人一区| 伊人久久久久久久久久久| 日韩精品一区二区三区高清免费| 色www亚洲国产阿娇yao| 羞羞电影在线观看www| 日韩亚洲欧美成人一区| 免费的毛片视频| 国产欧美日韩另类一区| 国产成人精品亚洲精品| 国产大学生自拍视频| 国模人体一区二区| 丰满少妇久久久| 天天摸天天操天天干| 中文官网资源新版中文第二页在线观看| 黄色一级片免费在线观看| 2024最新电影免费在线观看| 二区三区四区视频| 国产精品123区| 污视频网站在线免费| 久久久久久久人妻无码中文字幕爆| 911国产在线| 91色视频在线观看| 国产亚洲欧美在线视频| 欧亚一区二区| 国产精品老女人精品视频| 五月开心六月丁香综合色啪| 九九热这里只有精品免费看| 中文字幕国产精品| 国产乱淫av一区二区三区| 国产精品久久久久久久午夜| 国内外成人免费激情在线视频| 欧美激情精品久久久六区热门| 黄色大片在线观看| 欧美日韩中文字幕在线播放| av福利精品| 国产精品外围在线观看| 九九精品在线| 国产黄色在线网站| 岳的好大精品一区二区三区| 欧美激情视频在线播放| 2020中文字字幕在线不卡| 成视频在线免费观看| 国产精品极品美女在线观看免费| 亚洲综合专区| 国产高清自拍99| 国产女主播一区二区| 日本一区二区三区国色天香| av电影免费在线| 成人免费在线视频观看| 成人在线免费看黄| 日本精品福利视频| 国产精品迅雷| 亚洲一区二区欧美激情| 亚洲熟女综合色一区二区三区|