摘要:下載并安裝目前的最新穩定版為,如果之后版本有升級,請將相應的版本號替換掉上面的。在實現的過程中,貌似對中文的支持不是那么好,所以接下來會嘗試使用一下中文分詞器來看看效果,順利的話會再出一篇文章。
原文來自:https://jellybool.com/post/setup-slasticsearch-on-your-website
在我的博客按Shift+S就可以呼出搜索框,可以直接體驗一下現實的Demo
ElasticSearch憑借強大的API和不俗的搜索性能,目前在搜索引擎領域的勢頭貌似越來越猛了,處于興趣原因,自己就花了點時間將自己的博客搜索插上了ElasticSearch的翅膀。
安裝Oracle JDKsudo add-apt-repository ppa:webupd8team/java sudo apt-get update sudo apt-get install oracle-java8-installer
因為ElasticSearch底層其實就是lucene,所以,需要java
如果以上第一行命令出現command not found,采取下面的解決方案,有兩個需要注意的地方:
sudo apt-get install python-software-properties sudo apt-get install software-properties-common
注:如果你想安裝OpenJDK,請用以下命令,不過這個我并沒有親自測試過。
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的最新穩定版為1.7.0,如果之后版本有升級,請將相應的版本號替換掉上面的1.7.0 。
你可以到這里查看:
https://www.elastic.co/downloads/elasticsearch
安裝之:
sudo dpkg -i elasticsearch-1.7.0.deb開機自啟動,
sudo update-rc.d elasticsearch defaults 95 10 sudo /etc/init.d/elasticsearch start測試
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" }
這樣其實你已經將ElasticSearch安裝成功了。
為Laravel項目安裝相應的ElasticSearch composer package當然,這些package有幾個都很不錯,而我個人使用的是Bouncy在composer.json里添加該package信息
"require": { "fadion/bouncy": "dev-l5" }
然后執行,composer update
添加 Service provider
來到config/app.php,在providers處添加:
"FadionBouncyBouncyServiceProvider",
最后執行:
php artisan vendor:publish
這樣之后,你在config/目錄就會得到兩個個配置文件
config/bouncy.php config/elasticsearch.php
第一個是關于Bouncypackage的簡單配置,第二個是關于ElasticSearch的具體配置,你可以直接打開來看看,如果沒有什么必要,你可以目前保持文件不變。
安裝完之后,我們怎么使用呢?其實很簡單,Bouncy提供一種非常簡單的方式將Laravel的Eloquent Model與ElasticSearch關聯起來--就只是使用一個trait而已!比如,我需要用Article Model作為示例:
use FadionBouncyBouncyTrait; class Article extends Eloquent { use BouncyTrait; // ...other Eloquent attributes // or methods. }
沒錯,這樣就可以了。
索引所有的文章這里我們在ArticleController實現索引所有的文章:
public function indexAllArticle() { return Article::all()->index(); }
嗯,就是這么簡單的,就像正常使用Eloquent一樣,不過是在后面多使用一個index()方法。
在這里的使用請確保你的ElasticSearch服務是在正常運行期間。
而且還有一個好處就是,Bouncy在你開啟auto_index的情況下,會自動在你創建和保存文件的時候自動將文章索引了,至于更多詳細的用法,你可以查看詳細的文檔。
開啟搜索Type something to search...
{!! Form::open(["url"=>"/search","method"=>"get"]) !!}{!! Form::close() !!}
我們在blade文件中創建一個搜索表單,并指定表單的提交方式為GET。
設置路由Route::get("/search","ArticleController@search");編寫search()方法
由于我們是直接使用GET的方式來傳遞參數,所以這里的示例僅是一些簡單的代碼:
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")); }
在這里我們只是指定了對文章的title進行匹配,你也可以將content作為匹配域。而highlight選項的配置是為了在視圖中高亮匹配的內容:
{!! $article->highlight("title") !!}
這樣,一個完整的搭建ElasticSearch的過程就完成了。
Todo在實現的過程中,貌似ElasticSearch對中文的支持不是那么好,所以接下來會嘗試使用一下中文分詞器來看看效果,順利的話會再出一篇文章。
中文分詞器
Happy Hacking
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/21038.html
摘要:之前受到這篇為你的站點插上的翅膀的啟發就嘗試在中引入,并完成中文索引。關于中文索引谷歌上關于中文搜索的文章有很多,例如這篇。中文索引中涉及的內容比較多,下次再用一個篇幅來分析。 如何在Lumen中使用Elasticsearch 前言 Lumen是基于Laravel核心組件的微框架,隨著Laravel5的發布,目前版本也已經到5了。之前受到這篇為你的站點插上ElasticSearch...
摘要:為了方便調試,可以修改文件,加入以下兩行安裝中文分詞插件原裝分詞器會簡單地拆分每個漢字,沒有根據詞庫來分詞,這樣的后果就是搜索結果很可能不是你想要的。原文鏈接參考資料權威指南為你的站點插上的翅膀安裝中文分詞中的簡介使用實現博客站內搜索 Elasticsearch是一個基于Apache Lucene(TM)的開源搜索引擎。無論在開源還是專有領域,Lucene可以被認為是迄今為止最先進、...
閱讀 1378·2021-10-08 10:04
閱讀 2681·2021-09-22 15:23
閱讀 2724·2021-09-04 16:40
閱讀 1172·2019-08-29 17:29
閱讀 1492·2019-08-29 17:28
閱讀 2988·2019-08-29 14:02
閱讀 2221·2019-08-29 13:18
閱讀 838·2019-08-23 18:35