Рубрики
Uncategorized

12. Полнотекстовый поиск Laravel Эластичный поиск (3)

Автор оригинала: David Wong.

Механизм Elasticsearch используется для настройки сегментации ik по китайским словам, связывания с моделью Laravel, а затем реализации бизнес-логики поиска. На этом статья заканчивается, используя пакет расширения cout от Laravel для завершения функции поиска

В последней части были установлены и настроены расширения с поддержкой Scout и Elastic

Отредактируйте модель статьи и добавьте функцию поиска Laravel Scout в модель, которую вы хотите получить. Признак регистрирует наблюдателя модели, чтобы синхронизировать модель с драйвером службы поиска:

php

namespace App;

use Illuminate\Database\Eloquent\Model;
use Laravel\Scout\Searchable;

class Article extends Model
{
    // Introducing this trait, the trait registers a model observer to keep the model synchronized to the driver of the retrieval service
    use Searchable;

//...

    // Define the type (type) in the index -- the type in ES corresponds to the table in MySQL
    public function searchableAs()
    {
        return 'article';
    }

    // Define which fields need to be searched
    public function toSearchableArray()
    {
        return [
            'id' => $this->id,
            'title' => $this->title,
            'content' => $this->content
        ];
     }

//...
}

Импортируйте существующие данные из Mysql в ElasticSearch с помощью команды artisan

php artisan scout:import

Проверьте, есть ли настроенный индекс в ElasticSearch и размер импортированных данных

curl 'localhost:9200/_cat/indices?v'

Некоторые из вызовов API Elasticsearch RESTful можно использовать для проверки данных

Просмотр Конфигурации Индекса

curl -XGET "http://localhost:9200/mi360?pretty=true"

Просмотреть список документов

curl -XGET "http://localhost:9200/mi360/_search?pretty=true"

Просмотрите документ с указанным

curl -XGET "http://localhost:9200/mi360/article/10?pretty=true"

ХОРОШО! После успешного импорта начните писать бизнес-логику поиска

Добавление маршрутизации

Route::get('/search', '[email protected]');

Отредактируйте форму формы в файле представления, отправьте ее по адресу маршрутизации и в форме ввода

Контроллер Записи

public function search(Request $request)
{
    $this->validate($request, [
        'query' => 'required',
    ]);

    // Escape special characters
    $query = str_replace('/', '\/', strip_tags($request->get('query')));

    // Page breakdown, 10 items per page
    $articles = Article::search($query)->paginate(10);

    return view('welcome.search', compact('articles','query'));
}

Напишите страницу отображения поиска

// Show search keywords and total number of searches

Search: {{$query} (a total of {{$articles - > total ()}} items were searched)

// The result of traversal search // Display paging code

ХОРОШО! На данный момент мы добавили сервер полнотекстового поиска на наш веб-сайт!

Происхождение: http://www.mi360.cn/articles/40

Статьи по теме: 11. Полнотекстовый поиск Laravel ElasticSearch (1) 12. Полнотекстовый поиск Laravel Эластичный поиск (II)

Оригинал: “https://developpaper.com/12-laravel-full-text-search-elastic-search-3/”