久久久久久久视色,久久电影免费精品,中文亚洲欧美乱码在线观看,在线免费播放AV片

<center id="vfaef"><input id="vfaef"><table id="vfaef"></table></input></center>

    <p id="vfaef"><kbd id="vfaef"></kbd></p>

    
    
    <pre id="vfaef"><u id="vfaef"></u></pre>

      <thead id="vfaef"><input id="vfaef"></input></thead>

    1. 站長(zhǎng)資訊網(wǎng)
      最全最豐富的資訊網(wǎng)站

      關(guān)于laravel使用es的正確姿勢(shì)

      下面由Laravel教程欄目給大家介紹laravel使用es的正確姿勢(shì),希望對(duì)需要的朋友有所幫助!

      關(guān)于laravel使用es的正確姿勢(shì)

      Elasticsearch 簡(jiǎn)介

      Elastic 的底層是開(kāi)源庫(kù) Lucene。但是,你沒(méi)法直接用 Lucene,必須自己寫(xiě)代碼去調(diào)用它的接口。Elastic 是 Lucene 的封裝,提供了 REST API 的操作接口,開(kāi)箱即用。

      ES 和 Mysql

      ES 里的概念類(lèi)比于 Mysql 如下圖所示:
      關(guān)于laravel使用es的正確姿勢(shì)

      倒排索引

      在說(shuō)倒排索引之前我們先說(shuō)說(shuō)什么是正排索引。正排索引也稱為”前向索引”,它是創(chuàng)建倒排索引的基礎(chǔ)。
      關(guān)于laravel使用es的正確姿勢(shì)
      如上在查詢一個(gè) keyword 在哪些文檔里包含的時(shí)候,需對(duì)所有的文檔進(jìn)行掃描以確保沒(méi)有遺漏,這樣就使得檢索時(shí)間大大延長(zhǎng),檢索效率低下。這個(gè)時(shí)候我們就用到了倒排索引,首先將文檔分詞。
      關(guān)于laravel使用es的正確姿勢(shì)
      比如我們要查詢‘搜索引擎’這個(gè)關(guān)鍵詞在哪些文檔中出現(xiàn)過(guò)。首先我們通過(guò)倒排索引可以查詢到該關(guān)鍵詞出現(xiàn)的文檔位置是在1和3中;然后再通過(guò)正排索引查詢到文檔1和3的內(nèi)容并返回結(jié)果。

      Laravel 使用 ES

      安裝插件

      basemkhirat/elasticsearch 是 Laravel 中使用 ES 的一個(gè)擴(kuò)展,使用起來(lái)非常方便:
      1)安裝方法

      $ composer require basemkhirat/elasticsearch

      2)發(fā)布

      $ php artisan vendor:publish –provider=”BasemkhiratElasticsearchElasticsearchServiceProvider”

      配置

      這樣我們就安裝好了,如下是我們的連接配置:

      'connections' => [     'default' => [         'servers' => [             [                 "host" => env("ELASTIC_HOST", "127.0.0.1"),                 "port" => env("ELASTIC_PORT", 9200),                 'user' => env('ELASTIC_USER', ''),                 'pass' => env('ELASTIC_PASS', ''),                 'scheme' => env('ELASTIC_SCHEME', 'http'),             ]         ],         'index' => env('ELASTIC_INDEX', 'my_index')     ]],

      servers 里可以加入我們的集群配置。

      使用方法

      該插件的使用方法可借鑒 Laravel 的查詢構(gòu)造器,支持常用的如 where、whereIn、whereBetweenorderBy、first、get,也支持分頁(yè)方法paginate。

      $documents = ES::connection(“default”)
      ->index(“my_index”)
      ->type(“my_type”)
      ->get(); # return a collection of results

      設(shè)置字段權(quán)重:

      ES::type(“my_type”)->search(“hello”, function($search){
      $search->boost(2)->fields([“title” => 2, “content” => 1])
      })->get();

      我們也可以通過(guò)修改源碼擴(kuò)充自己需要用到的方法,也可以構(gòu)造原生的查詢語(yǔ)句:

      $params['body'] = [             'aggs' => [                 'all_created' => [                     'terms' => [                         'field' => 'element.raw',                         'size'  => $this->_mAggsPageSize                    ],                      'aggs' => [                          'sum_pv' => [                             'sum' => ['field' => 'pv'],                         ],                     ],                 ],             ],         ];

      結(jié)語(yǔ)

      ES 內(nèi)置分詞器對(duì)中分支持并不友好,比較推薦的是 IK分詞器,需要注意的是ik版本需要與ES的版本號(hào)保持一致

      贊(0)
      分享到: 更多 (0)
      網(wǎng)站地圖   滬ICP備18035694號(hào)-2    滬公網(wǎng)安備31011702889846號(hào)