Meilisearch-laravel-scout: 검색에 λŒ€ν•œ μ‚¬μš©μž 지정 μ‹œκ°„ 초과λ₯Ό μ„€μ •ν•˜λŠ” 방법은 λ¬΄μ—‡μž…λ‹ˆκΉŒ?

에 λ§Œλ“  2021λ…„ 04μ›” 26일  Β·  8μ½”λ©˜νŠΈ  Β·  좜처: meilisearch/meilisearch-laravel-scout

λ‚˜λŠ” λ‹Ήμ‹ μ˜ ν›Œλ₯­ν•œ νŠœν† λ¦¬μ–Όμ— 따라 DigitalOcean λ°©μšΈμ„ μƒμ„±ν–ˆμœΌλ©° Laravelκ³Ό ν•¨κ»˜ μ„±κ³΅μ μœΌλ‘œ μ‚¬μš©ν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€ πŸ‘Œ

λ‚΄κ°€ 가진 μœ μΌν•œ λ¬Έμ œλŠ” μ„œλ²„κ°€ λ‹€μš΄λ˜μ—ˆμ„ λ•Œμž…λ‹ˆλ‹€(μˆ˜λ™μœΌλ‘œ μ€‘μ§€λ˜κ±°λ‚˜ CPUκ°€ 100% 이상).
였λ₯˜λ₯Ό ν‘œμ‹œν•  수 μžˆλ„λ‘ 짧은 μ‹œκ°„ 초과λ₯Ό μ„€μ •ν•  수 μžˆλŠ” μœ„μΉ˜λ₯Ό 찾을 수 μ—†μŠ΅λ‹ˆκΉŒ?
μ§€κΈˆμ€ 죽은 μ„œλ²„μ˜ 응닡을 λ¬΄κΈ°ν•œμœΌλ‘œ λ‘œλ“œ μ€‘μž…λ‹ˆλ‹€.

κ°€μž₯ μœ μš©ν•œ λŒ“κΈ€

μ•ˆλ…•ν•˜μ„Έμš” @desaintflorent μž…λ‹ˆλ‹€ .

이것이 κ·€ν•˜κ°€ μš”μ²­ν•œ 것인지 ν™•μ‹€ν•˜μ§€ μ•Šμ§€λ§Œ @hi019 κ°€ λ§ν•œ 것을 기반으둜 μ‚¬μš©μž μ •μ˜ http ν΄λΌμ΄μ–ΈνŠΈλ₯Ό μ‚¬μš©ν•˜λ„λ‘ MeilisearchServiceProviderλ₯Ό μž¬μ •μ˜ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

μ˜ˆμ‹œ:

php artisan make:provider MeilisearchServiceProvider
<?php

namespace App\Providers;

use MeiliSearch\Client;

class MeilisearchServiceProvider extends \Meilisearch\Scout\MeilisearchServiceProvider
{
    public function register()
    {
        parent::register();

        $this->app->singleton(Client::class, function () {
            return new Client(config('meilisearch.host'), config('meilisearch.key'), new \GuzzleHttp\Client(['timeout' => 0.01]));
        });
    }
}

λ‹Ήμ‹  config/app.php

'providers' => [
    // Other Service Providers

    App\Providers\MeilisearchServiceProvider::class,
],

그런 λ‹€μŒ composer.json에 λ‹€μŒμ„ μΆ”κ°€ν•˜μ—¬ Meilisearchκ°€ μžλ™ κ²€μƒ‰λ˜μ§€ μ•Šλ„λ‘ λΉ„ν™œμ„±ν™”ν•΄μ•Ό ν•©λ‹ˆλ‹€.

   ...
    "extra": {
        "laravel": {
            "dont-discover": [
                "meilisearch/meilisearch-laravel-scout"
            ]
        }
    },
   ...

그리고 λ‚΄κ°€ 당신이 쒋은 것을 λ†“μΉ˜μ§€ μ•ŠμœΌλ©΄ μ‹œκ°„ μ΄ˆκ³ΌλŠ” MeiliSearch\Exceptions\CommunicationException λ₯Ό 던질 κ²ƒμž…λ‹ˆλ‹€.

try {
    $movies = Movie::search('b')->get();
} catch (\MeiliSearch\Exceptions\CommunicationException $e) {
    // do something
}

λˆ„κ΅°κ°€κ°€ 더 λ‚˜μ€ 선택을 ν•œλ‹€λ©΄ 기꺼이 읽을 κ²ƒμž…λ‹ˆλ‹€ :슀마일:

λͺ¨λ“  8 λŒ“κΈ€

@desaintflorent λ‹˜ , μ œκ°€ 틀리지 μ•Šμ€ 경우 이 νŒ¨ν‚€μ§€λŠ” μ‹œκ°„ 초과λ₯Ό μ„€μ •ν•˜λŠ” μ˜΅μ…˜μ„ μ œκ³΅ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. μ €λŠ” laravel μ‚¬μš©μžκ°€ μ•„λ‹ˆλ―€λ‘œ laravel에 λŒ€ν•œ ν•΄κ²° 방법을 μ œκ³΅ν•  수 μ—†μŠ΅λ‹ˆλ‹€.
λˆ„κ΅°κ°€κ°€ ν•΄κ²° 방법을 μ•Œκ³  μžˆλ‹€λ©΄ 이 λ¬Έμ œμ— λŒ€ν•΄ 자유둭게 κ³΅μœ ν•˜μ‹­μ‹œμ˜€ πŸ™‚

우리 λ¬Έμ„œμ˜ DO νŠœν† λ¦¬μ–Όμ΄ λ§ˆμŒμ— λ“œμ…¨λ‹€λ‹ˆ λ‹€ν–‰μž…λ‹ˆλ‹€. 쒋은 λ¬Έμ„œμ™€ 톡합을 μ œκ³΅ν•˜κΈ° μœ„ν•΄ μ΅œμ„ μ„ λ‹€ν•©λ‹ˆλ‹€!

μ‚¬μš©μž 지정 GuzzleHTTP μΈμŠ€ν„΄μŠ€λ₯Ό ν΄λΌμ΄μ–ΈνŠΈμ— μ „λ‹¬ν•˜μ—¬ Meilisearch PHP ν΄λΌμ΄μ–ΈνŠΈ μˆ˜μ€€μ—μ„œ μˆ˜ν–‰ν•΄μ•Ό ν•œλ‹€κ³  μƒκ°ν•©λ‹ˆλ‹€. https://github.com/meilisearch/meilisearch-php#customize -your-http-client

ν˜„μž¬λ‘œμ„œλŠ” 방법이 μ—†μŠ΅λ‹ˆλ‹€. μ‚¬μš©μžκ°€ μ„€μ •μ—μ„œ μ‚¬μš©μž μ •μ˜ Meilisearch PHP ν΄λΌμ΄μ–ΈνŠΈλ₯Ό μ „λ‹¬ν•˜λ„λ‘ ν—ˆμš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

이것은 ν›Œλ₯­ν•œ μΆ”κ°€ 사항이 될 κ²ƒμž…λ‹ˆλ‹€. κ·ΈλŸ¬λ‚˜ μ»¨ν…μŠ€νŠΈλ₯Ό μ„€λͺ…ν•˜λŠ” 이 문제 에 λ”°λ₯΄λ©΄ 이 λ¦¬ν¬μ§€ν† λ¦¬μ—λŠ” larvel/scoutκ³Ό μΌμΉ˜ν•˜μ§€ μ•ŠλŠ” μƒˆλ‘œμš΄ μΆ”κ°€ ν•­λͺ©μ΄ μ—†μŠ΅λ‹ˆλ‹€.
meilisearch-laravel-scout-extended ν”ŒλŸ¬κ·ΈμΈμ΄ 될 μƒˆ μ €μž₯μ†Œλ₯Ό λ§Œλ“€κ³  μ΄λŸ¬ν•œ κ°€λŠ₯성을 여기에 톡합할 κ²ƒμž…λ‹ˆλ‹€. λ‹€μŒ 리포지토리(λ˜λŠ” 이 λ¦¬ν¬μ§€ν† λ¦¬μ˜ λ‹€μŒ 버전)λ₯Ό κ°œμ„ ν•˜κΈ° μœ„ν•œ 쒋은 아이디어이기 λ•Œλ¬Έμ— 이 문제λ₯Ό κ³΅κ°œν–ˆμŠ΅λ‹ˆλ‹€.

μ•ˆλ…•ν•˜μ„Έμš” @desaintflorent μž…λ‹ˆλ‹€ .

이것이 κ·€ν•˜κ°€ μš”μ²­ν•œ 것인지 ν™•μ‹€ν•˜μ§€ μ•Šμ§€λ§Œ @hi019 κ°€ λ§ν•œ 것을 기반으둜 μ‚¬μš©μž μ •μ˜ http ν΄λΌμ΄μ–ΈνŠΈλ₯Ό μ‚¬μš©ν•˜λ„λ‘ MeilisearchServiceProviderλ₯Ό μž¬μ •μ˜ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

μ˜ˆμ‹œ:

php artisan make:provider MeilisearchServiceProvider
<?php

namespace App\Providers;

use MeiliSearch\Client;

class MeilisearchServiceProvider extends \Meilisearch\Scout\MeilisearchServiceProvider
{
    public function register()
    {
        parent::register();

        $this->app->singleton(Client::class, function () {
            return new Client(config('meilisearch.host'), config('meilisearch.key'), new \GuzzleHttp\Client(['timeout' => 0.01]));
        });
    }
}

λ‹Ήμ‹  config/app.php

'providers' => [
    // Other Service Providers

    App\Providers\MeilisearchServiceProvider::class,
],

그런 λ‹€μŒ composer.json에 λ‹€μŒμ„ μΆ”κ°€ν•˜μ—¬ Meilisearchκ°€ μžλ™ κ²€μƒ‰λ˜μ§€ μ•Šλ„λ‘ λΉ„ν™œμ„±ν™”ν•΄μ•Ό ν•©λ‹ˆλ‹€.

   ...
    "extra": {
        "laravel": {
            "dont-discover": [
                "meilisearch/meilisearch-laravel-scout"
            ]
        }
    },
   ...

그리고 λ‚΄κ°€ 당신이 쒋은 것을 λ†“μΉ˜μ§€ μ•ŠμœΌλ©΄ μ‹œκ°„ μ΄ˆκ³ΌλŠ” MeiliSearch\Exceptions\CommunicationException λ₯Ό 던질 κ²ƒμž…λ‹ˆλ‹€.

try {
    $movies = Movie::search('b')->get();
} catch (\MeiliSearch\Exceptions\CommunicationException $e) {
    // do something
}

λˆ„κ΅°κ°€κ°€ 더 λ‚˜μ€ 선택을 ν•œλ‹€λ©΄ 기꺼이 읽을 κ²ƒμž…λ‹ˆλ‹€ :슀마일:

@shokme λŒ€μ‹  app.php에 κ³΅κΈ‰μžλ₯Ό 등둝해야 ν•©λ‹ˆλ‹€. https://laravel.com/docs/8.x/providers#registering -providers

@shokme λŒ€μ‹  app.php에 κ³΅κΈ‰μžλ₯Ό 등둝해야 ν•©λ‹ˆλ‹€. https://laravel.com/docs/8.x/providers#registering -providers

사싀, λ‚˜λŠ” 망원경 둜컬 μ„€μΉ˜μ—μ„œ 예λ₯Ό λ“€μ—ˆμ§€λ§Œ 당신이 μ˜³μŠ΅λ‹ˆλ‹€. λ˜ν•œ 이것이 더 λ‚«λ‹€κ³  μƒκ°ν•©λ‹ˆλ‹€.

λ„μ™€μ£Όμ…”μ„œ κ°μ‚¬ν•©λ‹ˆλ‹€!

@shokme κ·€ν•˜μ˜ μ˜ˆμ œκ°€ μ™„λ²½ν•˜κ²Œ μž‘λ™ν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€. κ·€ν•˜μ˜ μ½”λ“œλ₯Ό μ΄ν•΄ν–ˆμ§€λ§Œ 이것을 μ΄ν•΄ν•˜λŠ” 데 λ§Žμ€ μ‹œκ°„μ΄ 걸렸을 κ²ƒμž…λ‹ˆλ‹€. :) 도움을 μ£Όμ…”μ„œ λŒ€λ‹¨νžˆ κ°μ‚¬ν•©λ‹ˆλ‹€.

ν•œ κ°€μ§€λ§Œ, Meilisearchκ°€ μžλ™ κ²€μƒ‰λ˜μ§€ μ•Šλ„λ‘ λΉ„ν™œμ„±ν™”ν•˜λ©΄ 검색을 μ‹€ν–‰ν•  λ•Œ 였λ₯˜κ°€ λ°œμƒν–ˆμŠ΅λ‹ˆλ‹€( "λ“œλΌμ΄λ²„ [meilisearch]κ°€ μ§€μ›λ˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€." ).
κ·ΈλŸ¬λ‚˜ λΉ„ν™œμ„±ν™”ν•˜μ§€ μ•ŠμœΌλ©΄ λ‚΄ 둜컬 ν™˜κ²½μ—μ„œ μž‘λ™ν•©λ‹ˆλ‹€. 곧 생산에 도전할 μ˜ˆμ •μž…λ‹ˆλ‹€.
λΉ„ν™œμ„±ν™”ν•˜λŠ” 것이 μ€‘μš”ν•œ μ΄μœ λŠ” λ¬΄μ—‡μž…λ‹ˆκΉŒ?

κ·€ν•˜μ˜ 였λ₯˜λ₯Ό μž¬ν˜„ν•˜λ €κ³  μ‹œλ„ν–ˆμ§€λ§Œ μœ μΌν•œ 방법은 App\Providers\MeilisearchServiceProvider \Meilisearch\Scout\MeilisearchServiceProvider λ₯Ό ν™•μž₯ν•˜μ§€ μ•ŠλŠ” κ²ƒμž…λ‹ˆλ‹€.

ν•˜μ§€λ§Œ μ œκ°€ λ³΄μ—¬λ“œλ¦° μ½”λ“œλŠ” λŒ€λΆ€λΆ„ 망원경 νŒ¨ν‚€μ§€μ—μ„œ κ°€μ Έμ˜¨ κ²ƒμž…λ‹ˆλ‹€. λ”°λΌμ„œ "dont-discover"λŠ” 기본적으둜 νŒ¨ν‚€μ§€λ₯Ό λ“±λ‘ν•˜μ§€ μ•ŠμœΌλ©° ν•„μš”ν•  λ•Œ λ‘œλ“œν•  수 μžˆμŠ΅λ‹ˆλ‹€. λ‚΄ μ‹€μˆ˜, 당신은 이것을 ν”Όν•  수 μžˆμŠ΅λ‹ˆλ‹€ .

이제 App\Providers\MeilisearchServiceProvider 에 λŒ€ν•΄ λ‚΄κ°€ 옳고 νŒ¨ν‚€μ§€μ—μ„œ κ³΅κΈ‰μžλ₯Ό ν™•μž₯ν•˜μ§€ μ•ŠμœΌλ©΄ 잘 μž‘λ™ν•©λ‹ˆλ‹€. ν•˜μ§€λ§Œ μ†”μ§νžˆ λ§ν•΄μ„œ λ¬΄λŒ€ λ’€μ—μ„œ μ–΄λ–»κ²Œ μ²˜λ¦¬λ μ§€ 잘 λͺ¨λ₯΄κ² μŠ΅λ‹ˆλ‹€.
λ‚΄ 생각에 Meilisearch νŒ¨ν‚€μ§€κ°€ λ“±λ‘λœ λ‹€μŒ μ‚¬μš©μž 지정 κ³΅κΈ‰μžκ°€ λ“±λ‘λ˜κ³  ν΄λΌμ΄μ–ΈνŠΈ 싱글톀을 μž¬μ •μ˜ν•©λ‹ˆλ‹€. λͺ…ν™•ν•œ 닡변을 λ“œλ¦΄ 수 μ—†κΈ° λ•Œλ¬Έμ— μ—°μž₯ μ—¬λΆ€λŠ” κ·€ν•˜μ˜ μ„ νƒμž…λ‹ˆλ‹€.

그건 κ·Έλ ‡κ³ , 였늘 laravel-scout 9κ°€ meilisearch의 지원을 λ°›μ•„ 퍼슀트 νŒŒν‹° νŒ¨ν‚€μ§€λ‘œ μΆœμ‹œλ˜μ—ˆμŠ΅λ‹ˆλ‹€. μ‚¬μš©ν•˜κ³  싢을 μˆ˜λ„ μžˆμŠ΅λ‹ˆλ‹€. 이 νŒ¨ν‚€μ§€μ˜ μ½”λ“œλŠ” scout 내뢀에 λ³‘ν•©λ˜μ—ˆμœΌλ―€λ‘œ 아무 것도 λ³€κ²½λ˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.

이 νŽ˜μ΄μ§€κ°€ 도움이 λ˜μ—ˆλ‚˜μš”?
0 / 5 - 0 λ“±κΈ‰

κ΄€λ ¨ 문제

dreamcog picture dreamcog  Β·  14μ½”λ©˜νŠΈ

JexPY picture JexPY  Β·  8μ½”λ©˜νŠΈ

husonghua picture husonghua  Β·  5μ½”λ©˜νŠΈ

curquiza picture curquiza  Β·  17μ½”λ©˜νŠΈ

milosevicn picture milosevicn  Β·  5μ½”λ©˜νŠΈ