摘要:導(dǎo)語全文搜索是很重要的功能,實(shí)現(xiàn)的方式也有很多種。以下通過和實(shí)現(xiàn)。是用開發(fā)的,并在許可證下作為開源軟件發(fā)布。官方客戶端在和許多其他語言中都是可用的。根據(jù)的排名顯示,是最受歡迎的企業(yè)搜索引擎,其次是,也是基于。
導(dǎo)語
全文搜索是很重要的功能,實(shí)現(xiàn)的方式也有很多種。以下通過 Laravel Scout 和 Elasticsearch 實(shí)現(xiàn)。先來看下各自的介紹
Laravel Scout 為 Eloquent 模型全文搜索實(shí)現(xiàn)提供了簡(jiǎn)單的、基于驅(qū)動(dòng)的解決方案。通過使用模型觀察者,Scout 會(huì)自動(dòng)同步更新模型記錄的索引。
Elasticsearch是一個(gè)基于Lucene庫的搜索引擎。它提供了一個(gè)分布式、支持多租戶的全文搜索引擎,具有HTTP Web接口和無模式JSON文檔。Elasticsearch是用Java開發(fā)的,并在Apache許可證下作為開源軟件發(fā)布。官方客戶端在Java、.NET(C#)、PHP、Python、Apache Groovy、Ruby和許多其他語言中都是可用的。[5]根據(jù)DB-Engines的排名顯示,Elasticsearch是最受歡迎的企業(yè)搜索引擎,其次是Apache Solr,也是基于Lucene。新建測(cè)試數(shù)據(jù)
新建 fake_articles 用來測(cè)試
新建模型以及數(shù)據(jù)遷移 php artisan make:model Models/FakeArticle -m
在數(shù)據(jù)遷移中 database/migrations/2019_06_13_095420_create_fake_articles_table.php 編輯如下
public function up() { Schema::create("fake_articles", function (Blueprint $table) { $table->increments("id"); $table->string("author", 20)->comment("作者"); $table->string("title", 200)->comment("標(biāo)題"); $table->text("content")->comment("內(nèi)容"); $table->timestamps(); }); }
運(yùn)行遷移 php artisan migrate
新建數(shù)據(jù)填充 php artisan make:seeder FakeArticlesSeeder
填充幾條中文數(shù)據(jù),以便后續(xù)測(cè)試
public function run() { AppModelsFakeArticle::insert([ [ "author" => "王二", "title" => "黃金時(shí)代", "content" => "那一天我二十一歲,在我一生的黃金時(shí)代,我有好多奢望。我想愛,想吃,還想在一瞬間變成天上半明半暗的云,后來我才知道,生活就是個(gè)緩慢受錘的過程,人一天天老下去,奢望也一天天消逝,最后變得像挨了錘的牛一樣??墒俏疫^二十一歲生日時(shí)沒有預(yù)見到這一點(diǎn)。我覺得自己會(huì)永遠(yuǎn)生猛下去,什么也錘不了我。", "created_at" => now(), "updated_at" => now(), ], ["author" => "陳輝", "title" => "綠毛水怪", "content" => "大團(tuán)的蒲公英浮在街道的河流口,吞吐著柔軟的針一樣的光,我們好像在池塘的水底,從一個(gè)月亮走向另一個(gè)月亮。", "created_at" => now(), "updated_at" => now(), ], ["author" => "迅哥", "title" => "社戲", "content" => "兩岸的豆麥和河底的水草所發(fā)散出來的清香,夾雜在水氣中撲面的吹來;月色便朦朧在這水氣里。淡黑的起伏的連山,仿佛是踴躍的鐵的獸脊似的,都遠(yuǎn)遠(yuǎn)的向船尾跑去了,但我卻還以為船慢。他們換了四回手,漸望見依稀的趙莊,而且似乎聽到歌吹了,還有幾點(diǎn)火,料想便是戲臺(tái),但或者也許是漁火。", "created_at" => now(), "updated_at" => now(), ] ]); }
運(yùn)行填充 php artisan db:seed --class=FakeArticlesSeeder
搭建 Elasticsearch 容器laradock 中支持 Elasticsearch,直接搭建就可以,省去了諸多麻煩
切換到 laradock 目錄
docker-compose build elasticsearch
docker-compose up -d elasticsearch
進(jìn)入容器中 docker-compose exec elasticsearch bash
安裝 ik 插件,注意要和 elasticsearch 版本相同,在 elasticsearch/Dockerfile 中可以查看版本 ./bin/elasticsearch-plugin install https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v6.6.0/elasticsearch-analysis-ik-6.6.0.zip
退出容器后重啟 docker-compose restart elasticsearch
參考資料:Laravel Scout、ik
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/27893.html
摘要:寫在前面以下簡(jiǎn)稱是一個(gè)實(shí)時(shí)的分布式搜索和分析引擎。在搜索引擎方面,不僅僅有,像另一篇提到的,還有等等,這里不做評(píng)價(jià)和比較,本篇主要介紹中如何使用。首選必須安裝有,請(qǐng)參考。本文基于,其他版本大同小異。 寫在前面 Elasticsearch(以下簡(jiǎn)稱es)是一個(gè)實(shí)時(shí)的分布式搜索和分析引擎。 在搜索引擎方面,不僅僅有Elasticsearch,像另一篇提到的Algolia,還有sphinx、...
摘要:至于其他的算一般我習(xí)慣說樹形模型,這里說的概率模型可能是差不多的意思。 要點(diǎn) 不同工具之間版本匹配很重要由點(diǎn)及面,先實(shí)踐起來再學(xué)細(xì)節(jié)的原理和使用 技術(shù)棧 laravel5.5框架+scout組件+elasticsearch6.3.0搜索引擎 輔助 elasticsearch-head 查看集群數(shù)據(jù)可視化 中文分詞插件Ik 介紹 laravel是一款現(xiàn)代化的php框架es是搜索引擎e...
閱讀 2795·2023-04-26 01:47
閱讀 3601·2023-04-25 23:45
閱讀 2481·2021-10-13 09:39
閱讀 617·2021-10-09 09:44
閱讀 1807·2021-09-22 15:59
閱讀 2786·2021-09-13 10:33
閱讀 1733·2021-09-03 10:30
閱讀 667·2019-08-30 15:53