Meilisearch-laravel-scout: Bagaimana cara mengatur batas waktu khusus untuk pencarian?

Dibuat pada 26 Apr 2021  ·  8Komentar  ·  Sumber: meilisearch/meilisearch-laravel-scout

Saya membuat tetesan DigitalOcean mengikuti tutorial hebat Anda, dan saya berhasil menggunakannya dengan Laravel

Satu-satunya masalah yang saya miliki adalah ketika server sedang down (berhenti secara manual atau CPU lebih dari 100%).
Saya tidak dapat menemukan di mana saya dapat mengatur batas waktu singkat sehingga saya dapat menampilkan kesalahan?
Saat ini sedang memuat tanpa batas menunggu tanggapan dari server mati.

Komentar yang paling membantu

Halo @desaintflorent ,

Saya tidak yakin ini yang Anda minta, tetapi berdasarkan apa yang dikatakan @ hi019 , Anda dapat mengganti MeilisearchServiceProvider untuk menggunakan klien http khusus.

contoh:

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]));
        });
    }
}

Di dalam dirimu config/app.php

'providers' => [
    // Other Service Providers

    App\Providers\MeilisearchServiceProvider::class,
],

Kemudian, Anda harus menonaktifkan Meilisearch agar tidak ditemukan secara otomatis dengan menambahkan yang berikut ini ke composer.json Anda

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

Dan jika saya tidak melewatkan sesuatu yang Anda harus bagus, batas waktu akan menghasilkan MeiliSearch\Exceptions\CommunicationException

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

Jika seseorang memiliki pilihan yang lebih baik, saya akan dengan senang hati membacanya :senyum:

Semua 8 komentar

Halo @desaintflorent , kalau tidak salah paket ini tidak menyediakan opsi untuk mengatur batas waktu. Saya bukan pengguna laravel jadi saya tidak dapat memberikan solusi apa pun dengan laravel.
Jika seseorang mengetahui solusinya, jangan ragu untuk membagikannya tentang masalah ini

Senang membaca Anda menyukai tutorial DO di dokumen kami, kami melakukan yang terbaik untuk menyediakan integrasi dengan dokumentasi yang bagus!

Saya percaya ini harus dilakukan di tingkat Klien PHP Meilisearch dengan meneruskan contoh GuzzleHTTP khusus ke klien: https://github.com/meilisearch/meilisearch-php#customize -your-http-client

Tidak ada cara untuk melakukan ini dengan saat ini. Mungkin kami dapat mengizinkan pengguna untuk melewati Klien PHP Meilisearch khusus di konfigurasi

Ini akan menjadi tambahan yang bagus. Namun, menurut masalah ini di mana saya menjelaskan konteksnya, repo ini tidak akan memiliki tambahan baru yang tidak konsisten dengan larvel/scout
Kami mungkin membuat repo baru yang lebih merupakan plugin meilisearch-laravel-scout-extended, dan kami akan mengintegrasikan kemungkinan semacam ini ke dalamnya. Saya membiarkan masalah ini terbuka karena ini adalah ide yang bagus untuk perbaikan untuk repo berikutnya (atau versi berikutnya dari repo ini).

Halo @desaintflorent ,

Saya tidak yakin ini yang Anda minta, tetapi berdasarkan apa yang dikatakan @ hi019 , Anda dapat mengganti MeilisearchServiceProvider untuk menggunakan klien http khusus.

contoh:

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]));
        });
    }
}

Di dalam dirimu config/app.php

'providers' => [
    // Other Service Providers

    App\Providers\MeilisearchServiceProvider::class,
],

Kemudian, Anda harus menonaktifkan Meilisearch agar tidak ditemukan secara otomatis dengan menambahkan yang berikut ini ke composer.json Anda

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

Dan jika saya tidak melewatkan sesuatu yang Anda harus bagus, batas waktu akan menghasilkan MeiliSearch\Exceptions\CommunicationException

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

Jika seseorang memiliki pilihan yang lebih baik, saya akan dengan senang hati membacanya :senyum:

@shokme Anda mungkin harus mendaftarkan penyedia di app.php sebagai gantinya: https://laravel.com/docs/8.x/providers#registering -providers

@shokme Anda mungkin harus mendaftarkan penyedia di app.php sebagai gantinya: https://laravel.com/docs/8.x/providers#registering -providers

Memang saya mengambil contoh dari instalasi teleskop lokal tetapi Anda benar, saya juga berpikir ini lebih baik.

Terima kasih semua atas bantuan Anda!

@shokme contoh Anda berfungsi dengan baik, saya mengerti kode Anda, tetapi saya membutuhkan banyak waktu untuk mengetahuinya :) Jadi terima kasih banyak atas bantuan Anda.

Hanya satu hal, ketika saya menonaktifkan Meilisearch agar tidak ditemukan secara otomatis, saya mengalami kesalahan saat menjalankan pencarian ("Driver [meilisearch] tidak didukung." )
Tetapi dengan tidak menonaktifkannya, ini berfungsi di lingkungan lokal saya. Akan segera dicoba di produksi.
Mengapa penting untuk menonaktifkannya?

Saya mencoba mereproduksi kesalahan Anda dan satu-satunya cara adalah dengan tidak memperpanjang \Meilisearch\Scout\MeilisearchServiceProvider dari App\Providers\MeilisearchServiceProvider .

Tapi, kode yang saya tunjukkan kepada Anda sebagian besar dari paket teleskop. Jadi "dont-discover" tidak akan mendaftarkan paket secara default dan memungkinkan Anda untuk memuatnya saat dibutuhkan. kesalahan saya, Anda dapat menghindari ini .

Sekarang tentang App\Providers\MeilisearchServiceProvider , Jika saya benar dan Anda tidak memperluas penyedia dari paket, itu berfungsi, bagus. Tapi sejujurnya saya tidak yakin bagaimana itu akan ditangani di belakang layar.
Dugaan saya adalah paket Meilisearch akan terdaftar dan kemudian penyedia kustom akan terdaftar dan menimpa singleton Klien. Pilihan Anda untuk memperpanjang atau tidak pada yang satu itu karena saya tidak dapat memberikan jawaban yang jelas.

Omong-omong, hari ini laravel-scout 9 telah dirilis dengan dukungan meilisearch sebagai paket pihak pertama, Anda mungkin ingin menggunakannya, kode paket ini telah digabungkan di dalam scout sehingga tidak akan mengubah apa pun untuk Anda.

Apakah halaman ini membantu?
0 / 5 - 0 peringkat