资讯专栏INFORMATION COLUMN

如何在Lumen中使用Elasticsearch

jubincn / 2332人阅读

摘要:之前受到这篇为你的站点插上的翅膀的启发就尝试在中引入,并完成中文索引。关于中文索引谷歌上关于中文搜索的文章有很多,例如这篇。中文索引中涉及的内容比较多,下次再用一个篇幅来分析。

如何在Lumen中使用Elasticsearch 前言

Lumen是基于Laravel核心组件的微框架,随着Laravel5的发布,目前版本也已经到5了。之前受到这篇为你的站点插上ElasticSearch的翅膀的启发, 就尝试在lumen中引入ES,并完成中文索引。

谷歌一下“Laravel Elasticsearch”, 会发现很多插件,本文使用的是上面文章中提到的Fadion/Bouncy,其实各个插件都大同小异,主要功能都是ES提供的library完成的。

下载运行Elasticsearch

关于运行就不多说了,大家直接看官方文档就行。

引入第三方包

在lumen项目的composer.json中添加如下内容

json"require": {
        "fadion/bouncy": "dev-l5"
    },

运行composer update "fadion/bouncy", 开始下载依赖。

FadionBouncyBouncyServiceProvider加入到bootstrap/app.php中,如下

php$app->register(FadionBouncyBouncyServiceProvider::class);

把"fadion/bouncy"包中的config文件夹中的文件复制到自己的config文件夹中,并把config.php重命名为bouncy.php

为Lumen适配

由于这个包是为Laravel5提供的,有一些函数需要补充。首先打开 FadionBouncyBouncyServiceProvider这个文件,看看哪些方法需要添加。

config_path函数,Lumen中没有提供这个方法,需要自己补充下,非常简单的方法,记得用composer加载文件。

phpfunction config_path(){
    return app()->basePath("config");
}

Lumen中加载配置文件的方式和Larvel不同,需要在AppProvidersAppServiceProvider中添加如下方法,并在register方法中调用。注意AppProvidersAppServiceProvider必须在FadionBouncyBouncyServiceProvider之前被注册。

phpprotected function loadConfigFile(){
    $this->app->configure("elasticsearch");
}

至此,Lumen已经能够和ES互动了。

如何使用

简单使用的话,只需要在Eloquent Model中添加一个Trait即可,请参照github上的文档 或者 为你的站点插上ElasticSearch的翅膀文中的介绍。毕竟接下来都是ES的内容,官方文档一大堆,要一下完全搞清楚那些名词也不现实,google配合文档是个好方法。

关于中文索引

谷歌上关于ES中文搜索的文章有很多,例如这篇。文中比较了5个不同分词插件。我挑选了smartcnicu使用了以下,发现简单的词汇是没问题的,但是有一些词还是不能很好的分出来,例如"谷歌",两个插件都变为了"谷","歌";“薪酬”在smartcn下被拆分为“薪”,“酬”,icu效果倒是很好。

关于如何精确设置索引,请关注ES官方文档中的 mapping -> core type。中文索引中涉及的ES内容比较多,下次再用一个篇幅来分析。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/21035.html

相关文章

  • 学习 Lumen 用户认证 (一)

    摘要:在开发中,用户认证是核心,是数据是否有保障的前提,目前主要有两种常用方式进行用户认证和。附是为了在网络应用环境间传递声明而执行的一种基于的开放标准。 好久没写 PHP 代码了,尤其是 Lumen,我是 Lumen 的忠实用户,自从面世开始,我就将 Lumen 作为我 API 的主要框架使用。 但说到 API,不得不说的一个概念:「前后端分离」,现在越来越多的团队都采用前后端分离,彻底解...

    wangzy2019 评论0 收藏0
  • Lumen 初体验

    摘要:介绍为速度而生的框架。是官方给出的例子,直接拷贝命名为。一般来说,我们应该避免使用末尾带斜杠的。因为它如果找不到文件,就会自动在末尾加个斜杠,尝试寻找目录下的文件等等,具体是在中配置。方案修改修改的配置文件,将指向重启。 介绍 Lumen:为速度而生的 Laravel 框架。 Lumen 是 Laravel 的作者(Taylor Otwell)的又一力作。简单、快速、优雅的它的特点...

    Leck1e 评论0 收藏0
  • Lumen微服务生成Swagger文档

    摘要:本文将会告诉你如何借助中插件,在开发微服务项目时项目和其它项目方法类似快速的在代码中使用注释来创建文档。本文将会持续修正和更新,最新内容请参考我的上的程序猿成长计划项目,欢迎,更多精彩内容请。框架配置我们使用当前最新的来演示。 showImg(https://segmentfault.com/img/remote/1460000017715535?w=1072&h=711); 作为一名...

    alighters 评论0 收藏0
  • Lumen用户认证JWT,源码解读

    摘要:如何做用户认证根据文档描述,提供用户认证的接口,他的核心是看守器和提供器,看守器定义怎么认证用户,提供器定义怎么检索用户。 最近的一个PHP项目,上一个项目是采用ThinkPHP来弄的,因为很早就听说过Laravel的大名,所以进了Laravel的官网,意外发现了Lumen,正好我项目是提供API的,所以选择了Lumen,因为是Laravel的精简版,看了几天的Laravel文档,也总...

    AZmake 评论0 收藏0

发表评论

0条评论

jubincn

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<