代码编织梦想

laravel 如何使用方便的使用es实现全文搜索功能?

本扩展包支持IK分词设置。

在按下文操作前请先阅读 laravel scout 全文搜索文档

安装

您可以通过composer安装软件包:

composer require wannanbigpig/laravel-scout-elastic

Laravel 会自动注册驱动服务提供者。
安装elasticsearch-php客户端 要使用此库,当前支持版本 (^7.9)。
参考:elasticsearch/elasticsearch

composer require elasticsearch/elasticsearch:"^7.9"

Elasticsearch 配置

发布Laravel Scout包配置后,您需要将驱动程序设置为弹性搜索并添加其配置:

// config/scout.php
<?php

return [
    // ...
    
    'driver' => env('SCOUT_DRIVER', 'elasticsearch'),
    
    // ...
    
    /*
    |--------------------------------------------------------------------------
    | Elasticsearch Configuration
    |--------------------------------------------------------------------------
    |
    | Here you may configure your Elasticsearch settings.
    |
    */

    'elasticsearch' => [
        'hosts' => [env('ELASTICSEARCH_HOST', 'http://127.0.0.1:9200')],
        // 如果你的es没有开启校验账号密码则忽略该配置
        // 'auth' => [
        //     'username' => 'elastic',
        //     'password' => 'password copied during Elasticsearch start',
        // ],
        // index_ 后跟索引名称。如果不需要自定义索引分词模式,则跳过下面的设置
        'index_article' => [
            'settings' => [
                'number_of_shards' => 5,
                'number_of_replicas' => 1,
            ],
            'mappings' => [
                "properties" => [
                    "title" => [
                        "type" => "text",
                        "analyzer" => "ik_max_word",
                        "search_analyzer" => "ik_smart",
                        "fields" => ["keyword" => ["type" => "keyword", "ignore_above" => 256]],
                    ],
                ],
            ],
        ],
    ],
];

使用

命令
// 创建索引
php artisan scout:index article

// 删除
php artisan scout:delete-index article

// 批量更新数据到es
// Article这个model需引入use Laravel\Scout\Searchable;
// 想自定义同步到es的字段需自己实现toSearchableArray这个方法
php artisan scout:import "App\Models\Article"

搜索示例
use App\Models\Article;

// $condition = "test";
// ... or
// $condition = [
//     "title" => "test",
//     "abstract" => "test"
// ];
// ... or
$keyword = "test";
$source = [1,2];
$startTime = '2023-05-01T00:00:00.000+0800';
$endTime = '2023-05-20T00:00:00.000+0800';
$condition = [
	// 该字段仅用来区分是否选择自定义es搜索body请求体,不会实际发送至es
    "_customize_body" => 1,
    "bool" => [
        "should" => [
            [
                "match" => [
                    "title" => ["query" => $keyword, 'boost' => 5]
                ]
            ],
            [
                "match" => [
                    "abstract" => ["query" => $keyword, 'boost' => 3]
                ]
            ],
        ],
        "must" => [
            [
                "terms" => ["source" => $source]
            ],
            [
                "range" => [
                    "created_at" => [
                        'gte' => $startTime,
                        'lte' => $endTime
                    ]
                ]
            ]
        ]
    ],
     
];

$data = Article::search($condition)
        ->orderBy('_score', 'desc')
        ->paginate(10);

更多使用方法 Laravel Scout official documentation.

参考:

https://github.com/ErickTamayo/laravel-scout-elastic

https://github.com/laravel/scout/tree/10.x

https://github.com/medcl/elasticsearch-analysis-ik

License

The MIT License (MIT).

本文为博主原创文章,未经博主允许不得转载。如有问题,欢迎扶正。
本文链接:https://blog.csdn.net/u010324331/article/details/130890179

php站内搜索功能(laravel自带scout驱动+elasticsearch)_xczd的博客-爱代码爱编程_scout php

站内搜索 由于最近做的网站需要用到网站的站内搜索,我也是偷偷摸摸学了一手,希望有需要的朋友也可以看看 搜索引擎 Elasticsearch 官方网站 https://www.elastic.co/cn/ 原理:输入内容与

laravel下使用elasticsearch+analysis-ik的全文搜索演示程序_whatprime的博客-爱代码爱编程

介绍         ElasticSearch是一个基于Lucene的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口。它是基于java开发的,需要安装jdk8,才能正常启动。         analysis-ik是一个中文的分词插件,可以实现中文的分词。 laravel项目的创建 1.新建项目  lar

laravel5.4中文分词搜索-使用 laravel scout,elasticsearch,ik 分词(一)-爱代码爱编程

elasticsearch需要的环境搭建 简介: 使用elasticsearch的前提是你的主机必须安装了java的JDK,而且版本必须是1.8以上,并设置JAVA_HOME环境变量 java的jdk下载如图: htt

laravel5.4中文分词搜索-使用 laravel scout,elasticsearch,ik 分词(二)-爱代码爱编程

上一篇环境搭建地址:https://blog.csdn.net/huangfenhu/article/details/94004316 安装Scout 进入laravel项目的根目录使用composer 命令安装:

laravel5.4中文分词搜索-使用 laravel scout,elasticsearch,ik 分词(三)-爱代码爱编程

上一篇地址:https://blog.csdn.net/huangfenhu/article/details/94009241 创建一个文章表和文章模型: php artisan make:model Models/Ar

laravel使用scout和elasticsearch中文分词ik-爱代码爱编程

安装es和ik: 参考链接:https://blog.csdn.net/zhezhebie/article/details/105482149 安装composer包: https://github.com/baijunyao/laravel-scout-elasticsearch 在scout里面添加配置: 'elasticsearch' =&

docker + laravel项目使用elasticsearch进行全文检索功能-爱代码爱编程

Laravel项目使用Elasticsearch进行全文检索功能 博主用的是mac + docker,所以就用docker进行讲解 只需五步骤: • 启动 集成 ik 中文分词插件的 Elasticsearch Docker 镜像 • Laravel 配置 Scout • 配置 Model 模型 • 导入数据 • 搜索 参考 • ik 中文分词插件 •

基于 centos7 搭建 laravel+scout+elasticsearch+ik-analyzer 用于中文分词全文检索服务及测试-爱代码爱编程

目录 基于 centos7 搭建 laravel+scout+elasticsearch+ik-analyzer 用于中文分词全文检索服务及测试相关软件及版本安装或升级jdk(版本:19.0.2)安装es(版本:8.