摘要:下載并安裝目前的最新穩(wěn)定版為,如果之后版本有升級(jí),請(qǐng)將相應(yīng)的版本號(hào)替換掉上面的。在實(shí)現(xiàn)的過(guò)程中,貌似對(duì)中文的支持不是那么好,所以接下來(lái)會(huì)嘗試使用一下中文分詞器來(lái)看看效果,順利的話會(huì)再出一篇文章。
原文來(lái)自:https://jellybool.com/post/setup-slasticsearch-on-your-website
在我的博客按Shift+S就可以呼出搜索框,可以直接體驗(yàn)一下現(xiàn)實(shí)的Demo
ElasticSearch憑借強(qiáng)大的API和不俗的搜索性能,目前在搜索引擎領(lǐng)域的勢(shì)頭貌似越來(lái)越猛了,處于興趣原因,自己就花了點(diǎn)時(shí)間將自己的博客搜索插上了ElasticSearch的翅膀。
安裝Oracle JDKsudo add-apt-repository ppa:webupd8team/java sudo apt-get update sudo apt-get install oracle-java8-installer
因?yàn)?b>ElasticSearch底層其實(shí)就是lucene,所以,需要java
如果以上第一行命令出現(xiàn)command not found,采取下面的解決方案,有兩個(gè)需要注意的地方:
sudo apt-get install python-software-properties sudo apt-get install software-properties-common
注:如果你想安裝OpenJDK,請(qǐng)用以下命令,不過(guò)這個(gè)我并沒(méi)有親自測(cè)試過(guò)。
sudo apt-get update sudo apt-get install openjdk-8-jre-headless -y下載并安裝ElasticSearch
wget https://download.elasticsearch.org/elasticsearch/elasticsearch/elasticsearch-1.7.0.deb sudo dpkg -i elasticsearch-1.7.0.deb
目前ElasticSearch的最新穩(wěn)定版為1.7.0,如果之后版本有升級(jí),請(qǐng)將相應(yīng)的版本號(hào)替換掉上面的1.7.0 。
你可以到這里查看:
https://www.elastic.co/downloads/elasticsearch
安裝之:
sudo dpkg -i elasticsearch-1.7.0.deb開機(jī)自啟動(dòng),
sudo update-rc.d elasticsearch defaults 95 10 sudo /etc/init.d/elasticsearch start測(cè)試
curl http://localhost:9200
你將看到類似以下的信息:
{ "status" : 200, "version" : { "number" : "1.7.0", "build_timestamp" : "2015-07-16T14:31:07Z", "build_snapshot" : false, "lucene_version" : "4.10.4" }, "tagline" : "You Know, for Search" }
這樣其實(shí)你已經(jīng)將ElasticSearch安裝成功了。
為L(zhǎng)aravel項(xiàng)目安裝相應(yīng)的ElasticSearch composer package當(dāng)然,這些package有幾個(gè)都很不錯(cuò),而我個(gè)人使用的是Bouncy在composer.json里添加該package信息
"require": { "fadion/bouncy": "dev-l5" }
然后執(zhí)行,composer update
添加 Service provider
來(lái)到config/app.php,在providers處添加:
"FadionBouncyBouncyServiceProvider",
最后執(zhí)行:
php artisan vendor:publish
這樣之后,你在config/目錄就會(huì)得到兩個(gè)個(gè)配置文件
config/bouncy.php config/elasticsearch.php
第一個(gè)是關(guān)于Bouncypackage的簡(jiǎn)單配置,第二個(gè)是關(guān)于ElasticSearch的具體配置,你可以直接打開來(lái)看看,如果沒(méi)有什么必要,你可以目前保持文件不變。
安裝完之后,我們?cè)趺词褂媚??其?shí)很簡(jiǎn)單,Bouncy提供一種非常簡(jiǎn)單的方式將Laravel的Eloquent Model與ElasticSearch關(guān)聯(lián)起來(lái)--就只是使用一個(gè)trait而已!比如,我需要用Article Model作為示例:
use FadionBouncyBouncyTrait; class Article extends Eloquent { use BouncyTrait; // ...other Eloquent attributes // or methods. }
沒(méi)錯(cuò),這樣就可以了。
索引所有的文章這里我們?cè)?b>ArticleController實(shí)現(xiàn)索引所有的文章:
public function indexAllArticle() { return Article::all()->index(); }
嗯,就是這么簡(jiǎn)單的,就像正常使用Eloquent一樣,不過(guò)是在后面多使用一個(gè)index()方法。
在這里的使用請(qǐng)確保你的ElasticSearch服務(wù)是在正常運(yùn)行期間。
而且還有一個(gè)好處就是,Bouncy在你開啟auto_index的情況下,會(huì)自動(dòng)在你創(chuàng)建和保存文件的時(shí)候自動(dòng)將文章索引了,至于更多詳細(xì)的用法,你可以查看詳細(xì)的文檔。
開啟搜索Type something to search...
{!! Form::open(["url"=>"/search","method"=>"get"]) !!}{!! Form::close() !!}
我們?cè)?b>blade文件中創(chuàng)建一個(gè)搜索表單,并指定表單的提交方式為GET。
設(shè)置路由Route::get("/search","ArticleController@search");編寫search()方法
由于我們是直接使用GET的方式來(lái)傳遞參數(shù),所以這里的示例僅是一些簡(jiǎn)單的代碼:
public function search() { if ( isset($_GET["query"]) && !empty($_GET["query"]) ) { $query = $_GET["query"]; } $params = [ "query" => [ "match" => [ "title" => $query ] ], "highlight" => [ "fields" => [ "title" => new stdClass ] ], "size" => 20 ]; $articles = Article::search($params); return view("article.search", compact("articles")); }
在這里我們只是指定了對(duì)文章的title進(jìn)行匹配,你也可以將content作為匹配域。而highlight選項(xiàng)的配置是為了在視圖中高亮匹配的內(nèi)容:
{!! $article->highlight("title") !!}
這樣,一個(gè)完整的搭建ElasticSearch的過(guò)程就完成了。
Todo在實(shí)現(xiàn)的過(guò)程中,貌似ElasticSearch對(duì)中文的支持不是那么好,所以接下來(lái)會(huì)嘗試使用一下中文分詞器來(lái)看看效果,順利的話會(huì)再出一篇文章。
中文分詞器
Happy Hacking
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://www.ezyhdfw.cn/yun/21038.html
摘要:之前受到這篇為你的站點(diǎn)插上的翅膀的啟發(fā)就嘗試在中引入,并完成中文索引。關(guān)于中文索引谷歌上關(guān)于中文搜索的文章有很多,例如這篇。中文索引中涉及的內(nèi)容比較多,下次再用一個(gè)篇幅來(lái)分析。 如何在Lumen中使用Elasticsearch 前言 Lumen是基于Laravel核心組件的微框架,隨著Laravel5的發(fā)布,目前版本也已經(jīng)到5了。之前受到這篇為你的站點(diǎn)插上ElasticSearch...
摘要:為了方便調(diào)試,可以修改文件,加入以下兩行安裝中文分詞插件原裝分詞器會(huì)簡(jiǎn)單地拆分每個(gè)漢字,沒(méi)有根據(jù)詞庫(kù)來(lái)分詞,這樣的后果就是搜索結(jié)果很可能不是你想要的。原文鏈接參考資料權(quán)威指南為你的站點(diǎn)插上的翅膀安裝中文分詞中的簡(jiǎn)介使用實(shí)現(xiàn)博客站內(nèi)搜索 Elasticsearch是一個(gè)基于Apache Lucene(TM)的開源搜索引擎。無(wú)論在開源還是專有領(lǐng)域,Lucene可以被認(rèn)為是迄今為止最先進(jìn)、...
閱讀 1460·2021-10-08 10:04
閱讀 2797·2021-09-22 15:23
閱讀 2779·2021-09-04 16:40
閱讀 1234·2019-08-29 17:29
閱讀 1560·2019-08-29 17:28
閱讀 3044·2019-08-29 14:02
閱讀 2287·2019-08-29 13:18
閱讀 934·2019-08-23 18:35