承接 wkjagt/searchable 相关项目开发

从需求分析到上线部署,全程专人跟进,保证项目质量与交付效率

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

wkjagt/searchable

Composer 安装命令:

composer require wkjagt/searchable

包简介

Make Laravel models instantly searchable, and automatically indexed using Elastic Search.

README 文档

README

Make Laravel models instantly searchable, and automatically indexed using Elastic Search.

Work in progress

Adding search functionality to a laravel model only requires using a trait. Using the SearchableTrait in your modle will enable a model observer that acts on the created, updated and deleted events to keep your indexes up to date.

The trait adds a search method to your model that makes it easy to search Elastic Search for hits.

The provided facade allows similar functionality, and the added ability to search in multiple document types (i.e. models) at once.

Installation

Composer

Include the package in your composer file, and run composer update.

I'm still working on this, but dev-master will change to a stable tag as soon as I have one ready.

{
  "require" : {
     ...
    "wkjagt/searchable": "dev-master"
  }
}

Service provider

Add the ServiceProvider to your app.php:

'providers' => [
    ...
    'Searchable\SearchableServiceProvider'
]

Searchable Facade

If you want to use the Searchable facade, add it to your aliases in app.php:

'aliases' => [
    ...
    'Searchable'      => 'Searchable\SearchableFacade'
]

Searchable Trait

Add the SearchableTrait to the models you want indexed. For example:

class Thing extends Model {

    use SearchableTrait;
    
    ...
}

That's all you need to get started. Newly created Thing models will be automatically indexed. By default, all models will be added to a default index, and the fully qualified class name will be used as the document type (where backslashes are replaced by dots). This is fine for normal usage, but can be modified by adding static properties to your model:

class Thing extends Model {

    use SearchableTrait;
    
    public static $searchDocumentType = 'thing';
    
    public static $searchIndexName = 'my_index';
}

Searching

Searching can be done in two ways. SearchableTrait adds a search method to your model, which accepts one argument: an Elastic Search query. For example:

$query = [ 'filtered' => [
    'query' => [ 'match' => [ 'name' => 'some_name' ]],
    'filter' => [ 'term' => [ 'user_id' => 14 ]],
]];

$hits = Thing::search($query);

You can also search multiple models at once using the Searchable facade, which uses the native Elastic Search way of searching in multiple indexes/document types. The search method on Searchable takes an array of fully qualified class names of models, and needs to be chained to the withSearch method. An example:

$query = [ 'filtered' => [
    'query' => [ 'match' => [ 'name' => 'some_name' ]],
    'filter' => [ 'term' => [ 'user_id' => 14 ]],
]];

$hits = Searchable::search(['Thing', 'OtherThing'])->withQuery($query);

The results are returned as an array of Searchable\SearchResult instances, which are simple value objects, with two public properties:

  • hit: a hydrated Laravel Model
  • score : the search score

Indexing existing models

When adding Searchable to an existing project, you probably want to index your existing models. The added searchable:indexall artisan command adds this functionality to each model that uses SearchableTrait. To index all resources for a given model, run the command, passing the fully qualified class name as argument, replacing any backslashes with forward slashes:

./artisan searchable:indexall Namespace/Of/Your/Model

wkjagt/searchable 适用场景与选型建议

wkjagt/searchable 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 52 次下载、GitHub Stars 达 10, 最近一次更新时间为 2014 年 10 月 23 日, 在 PHP 生态内属于活跃度较高的组件。

它主要适用于以下技术方向: 「search」 「elasticsearch」 「laravel」 「eloquent」 「searching」 等业务场景。在实际项目中,围绕这些方向常见需要落地的问题包括:接口对接、性能调优、并发安全、与既有框架(Laravel / ThinkPHP / Yii / Webman 等)的兼容适配,以及生产环境的日志埋点与稳定性保障。

我们在过去多个企业项目中使用过 wkjagt/searchable 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。

围绕 wkjagt/searchable 我们能提供哪些服务?
定制开发 / 二次开发

基于 wkjagt/searchable 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。

BUG 修复 & 性能优化

线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。

项目外包 & 长期维护

承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。

yvsm@zunyunkeji.com QQ:316430983 微信:yvsm316 西安尊云信息科技 · 专注 PHP / Go / 分布式系统研发

统计信息

  • 总下载量: 52
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 10
  • 点击次数: 15
  • 依赖项目数: 0
  • 推荐数: 0

GitHub 信息

  • Stars: 10
  • Watchers: 1
  • Forks: 1
  • 开发语言: PHP

其他信息

  • 授权协议: MIT
  • 更新时间: 2014-10-23