Автор оригинала: David Wong.
Механизм Elasticsearch используется для настройки сегментации ik по китайским словам, связывания с моделью Laravel, а затем реализации бизнес-логики поиска. На этом статья заканчивается, используя пакет расширения cout от Laravel для завершения функции поиска
В последней части были установлены и настроены расширения с поддержкой Scout и Elastic
Отредактируйте модель статьи и добавьте функцию поиска Laravel Scout в модель, которую вы хотите получить. Признак регистрирует наблюдателя модели, чтобы синхронизировать модель с драйвером службы поиска:
Импортируйте существующие данные из 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// The result of traversal searchSearch: {{$query} (a total of {{$articles - > total ()}} items were searched)
-
@foreach($articles as $article)
-
- {{ $article->user->name }}
- {{ date('Y-m-d', strtotime($article->created_at)) }}
- {{ $article->category->name }}
- @foreach($article->tags as $tag) {{ $tag->name }} @endforeach
@endforeach
ХОРОШО! На данный момент мы добавили сервер полнотекстового поиска на наш веб-сайт!
Происхождение: http://www.mi360.cn/articles/40
Статьи по теме: 11. Полнотекстовый поиск Laravel ElasticSearch (1) 12. Полнотекстовый поиск Laravel Эластичный поиск (II)
Оригинал: “https://developpaper.com/12-laravel-full-text-search-elastic-search-3/”