Метод whereFullText
Метод whereFullText применяется к запросу Eloquent
или Query Builder и добавляет условие полнотекстового
поиска. Первым параметром передаётся имя колонки или
массив колонок, вторым - поисковый запрос. Третьим
необязательным параметром можно передать опции
поиска, такие как режим BOOLEAN или NATURAL LANGUAGE.
Для работы метода в базе данных должен быть создан
полнотекстовый индекс.
Синтаксис
<?php
Model::whereFullText($columns, $query, $options = []);
?>
Пример
Давайте выполним полнотекстовый поиск по полю 'title'
модели Article, найдя все статьи, содержащие слово
'laravel':
<?php
use AppModelsArticle;
$articles = Article::whereFullText('title', 'laravel')->get();
foreach ($articles as $article) {
echo $article->title;
}
?>
Результат выполнения кода:
"Laravel tutorial"
"Laravel best practices"
Пример
Поиск сразу по нескольким колонкам 'title' и
'content':
<?php
use AppModelsArticle;
$articles = Article::whereFullText(['title', 'content'], 'laravel')->get();
foreach ($articles as $article) {
echo $article->title;
}
?>
Результат выполнения кода:
"Laravel tutorial"
"Laravel best practices"
"Advanced PHP techniques"
Пример
Использование режима BOOLEAN для точного поиска
с операторами '+' и '-':
<?php
use AppModelsArticle;
$articles = Article::whereFullText(
'title',
'+laravel -php',
['mode' => 'boolean']
)->get();
foreach ($articles as $article) {
echo $article->title;
}
?>
Результат выполнения кода:
"Laravel tutorial"
"Laravel best practices"
Пример
Использование метода в Query Builder с таблицей
'articles':
<?php
use IlluminateSupportFacadesDB;
$articles = DB::table('articles')
->whereFullText('content', 'database query')
->get();
foreach ($articles as $article) {
echo $article->title;
}
?>
Результат выполнения кода:
"Optimizing database queries"
"Query builder in Laravel"
Пример
Поиск с учётом релевантности и сортировкой по соответствию:
<?php
use AppModelsArticle;
use IlluminateSupportFacadesDB;
$articles = Article::whereFullText('content', 'eloquent model')
->orderByRaw(DB::raw('relevance DESC'))
->get();
foreach ($articles as $article) {
echo $article->title;
}
?>
Результат выполнения кода:
"Eloquent relationships"
"Model events in Laravel"
Пример
Комбинирование полнотекстового поиска с обычными
условиями через метод where:
<?php
use AppModelsArticle;
$articles = Article::whereFullText('title', 'laravel')
->where('status', 'published')
->orderBy('created_at', 'desc')
->get();
foreach ($articles as $article) {
echo $article->title;
}
?>
Результат выполнения кода:
"Laravel best practices"
"Laravel tutorial"
Пример
Использование метода с оператором IN BOOLEAN MODE для фразового поиска:
<?php
use AppModelsArticle;
$articles = Article::whereFullText(
'content',
'"full text search"',
['mode' => 'boolean']
)->get();
foreach ($articles as $article) {
echo $article->title;
}
?>
Результат выполнения кода:
"Full text search in MySQL"
"Implementing search in Laravel"