- Laravel, AJAX உடன் கூடிய எளிய தேடுபொறிகள் முதல் Laravel Scout மற்றும் Algolia, Meilisearch அல்லது Elasticsearch போன்ற வெளிப்புற தேடுபொறிகளைப் பயன்படுத்தி மேம்பட்ட முழு உரை தேடல்கள் வரை அனைத்தையும் செயல்படுத்த உங்களை அனுமதிக்கிறது.
- இலகுரக தேடல்களுக்கு, Alpine.js அல்லது சொந்த பெறுதல் கோரிக்கைகளுடன் முன்பக்கத்தில் வடிகட்டுவது சேவையகத்தை ஓவர்லோட் செய்வதைத் தவிர்க்கிறது மற்றும் சிறிய பட்டியல்களில் பயனர் அனுபவத்தை மேம்படுத்துகிறது.
- லாரவெல் ஸ்கவுட் பல்வேறு தேடுபொறிகளுடன் ஒருங்கிணைப்பை மையப்படுத்துகிறது மற்றும் மாதிரிகளைத் தேடக்கூடியதாகக் குறிப்பது, குறியீடுகளை நிர்வகிப்பது மற்றும் வினவல்களை ஒரே மாதிரியாகத் தொடங்குவதை எளிதாக்குகிறது.
- தரவுகளின் அளவு, தேடல்களின் சிக்கலான தன்மை மற்றும் திட்டத்தின் செயல்திறன் மற்றும் பராமரிப்பு தேவைகள் ஆகியவற்றின் அடிப்படையில் இயந்திரத்தின் தேர்வு (SaaS, திறந்த மூல அல்லது தரவுத்தளம்) இருக்க வேண்டும்.
நீங்கள் லாராவெலுடன் பணிபுரியத் தொடங்கும் போது உங்களுக்கு ஒரு உடனடியாக பதிலளிக்கும் நிகழ்நேர தேடுபொறிஆயிரம் சாத்தியமான அணுகுமுறைகளுக்கு மத்தியில் தொலைந்து போவது எளிது: ஃபெட்ச் உடன் AJAX, jQuery, Alpine.js, அல்கோலியா அல்லது மெய்லிசர்ச்சுடன் ஸ்கவுட், முன்பக்க வடிகட்டுதல் போன்றவை. நல்ல செய்தி என்னவென்றால், லாராவெல் சுற்றுச்சூழல் அமைப்பு ஏற்கனவே முயற்சியில் இறக்காமல் மென்மையான மற்றும் விரைவான தேடலை அமைக்க உங்களுக்குத் தேவையான அனைத்தையும் வழங்குகிறது.
இந்த கட்டுரையில் நீங்கள் எவ்வாறு ஒன்று சேர்ப்பது என்பதைக் காண்பீர்கள் லாராவெலில் பல்வேறு வகையான நிகழ்நேர தேடல்கள்கிளாசிக் AJAX தானியங்குநிரப்புதல் முதல் Laravel Scout மற்றும் Algolia, Meilisearch, தரவுத்தளம் அல்லது Elasticsearch போன்ற தேடுபொறிகள் மூலம் முழு உரை தேடல்கள் வரை. தரவு அளவு குறைவாக இருக்கும்போது உலாவியில் நேரடியாக தரவை வடிகட்டுவதற்கு Alpine.js உடன் இலகுரக மாற்றுகளையும் நீங்கள் காண்பீர்கள்.
லாராவெலில் நிகழ்நேர தேடல் என்றால் என்ன, அடிப்படைகள் எவ்வாறு செயல்படுகின்றன?
நிகழ்நேர தேடலின் பின்னணியில் உள்ள யோசனை என்னவென்றால், பயனர் ஒரு உரை புலத்தில் தட்டச்சு செய்யும் போதுஒரு வினவல் தூண்டப்பட்டு, பக்கத்தை மீண்டும் ஏற்றாமலேயே முடிவுகள் புதுப்பிக்கப்படும். தொழில்நுட்ப ரீதியாக, இது மூன்று முக்கிய கூறுகளை உள்ளடக்கியது: லாராவெல் பின்தளம், உலாவியின் ஜாவாஸ்கிரிப்ட் மற்றும் JSON வடிவத்தில் தரவு பரிமாற்றம்.
ஒருபுறம், லாராவெல் சர்வர் லேயராக செயல்படுகிறது. கோரிக்கைகளைப் பெறுதல், தேடல் அளவுருக்களை (உள்ளிடப்பட்ட உரை) விளக்குதல், தரவுத்தளத்தை வினவுதல் மற்றும் கட்டமைக்கப்பட்ட பதிலை வழங்குதல் ஆகியவற்றிற்கு இது பொறுப்பாகும், பொதுவாக JSON வடிவத்தில். இந்த பதில் வெற்றி, பிழை அல்லது எந்த முடிவுகளும் கிடைக்கவில்லை என்பதைக் குறிக்கலாம்.
மறுமுனையில், பயனர் நிகழ்வுகளைக் கேட்பதற்கு ஜாவாஸ்கிரிப்ட் பொறுப்பு. தேடல் உள்ளீட்டில், பின்தளத்திற்கு ஒத்திசைவற்ற கோரிக்கைகளை (AJAX) அனுப்பி, உலாவி முழு புதுப்பிப்பைச் செய்யாமல் பக்கத்தில் திரும்பிய தரவைக் காண்பிக்கவும். இதை நேட்டிவ் ஃபெட்ச், jQuery AJAX அல்லது Alpine.js போன்ற சிறிய ரியாக்டிவ் லைப்ரரிகள் மூலம் செய்யலாம்.
இந்த அடிப்படை பொறிமுறையுடன் நீங்கள் a இலிருந்து உருவாக்கலாம் ஒரு சில பதிவுகளுடன் எளிய தானியங்குநிரப்புதல், Laravel Scout போன்ற நூலகங்கள் மற்றும் தேடலுக்கு உகந்ததாக வெளிப்புற தேடுபொறிகளால் ஆதரிக்கப்படும் பொருத்தம், பக்கமாக்கல் மற்றும் வடிப்பான்கள் கொண்ட மேம்பட்ட முழு-உரை தேடுபொறி வரை.
அடிப்படை நிகழ்நேர தேடுபொறிக்கான மாதிரி, வழிகள் மற்றும் கட்டுப்படுத்தி.
நீங்கள் ஜாவாஸ்கிரிப்டை ஆராய்வதற்கு முன், லாராவெல் பக்கம் நன்கு ஒழுங்கமைக்கப்பட்டுள்ளதா என்பதை உறுதிப்படுத்த வேண்டும்: தேடுவதற்கு ஒரு திறமையான மாதிரி, தெளிவான பாதைகள் மற்றும் ஒரு பிரத்யேக கட்டுப்படுத்தி. தேடல் தர்க்கத்தை நிகழ்நேரத்தில் நிர்வகிக்க.
முதல் படி, நீங்கள் தேடப் போகும் அட்டவணையைக் குறிக்கும் ஒரு எலோக்வென்ட் மாதிரியைக் கொண்டிருப்பது. நாடுகளின் அட்டவணையையும், அதன் பெயர் கொண்ட ஒரு மாதிரியையும் கற்பனை செய்து பாருங்கள். நாடு மிகவும் எளிமையானது, நேர முத்திரைகள் இல்லாமல் மற்றும் மொத்தமாக ஒதுக்க அனுமதிக்கப்படுகிறது:
தேடல்களுக்கான குறைந்தபட்ச எலோக்வென்ட் மாதிரியின் எடுத்துக்காட்டு:
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
class Pais extends Model
{
use HasFactory;
protected $guarded = [];
public $timestamps = false;
}
இங்கே மாதிரி என்று குறிப்பிடப்பட்டுள்ளது பைஸ் நிலையான லாராவெல் பெயர்வெளியில் அமைந்துள்ளது.இது மாதிரியிலிருந்து பெறப்படுகிறது மற்றும் பாதுகாக்கப்பட்ட வரிசையை காலியாக விடுவதன் மூலம் create() உடன் எந்த புலத்தையும் ஒதுக்க உங்களை அனுமதிக்கிறது. பொது $timestamps = false உடன் நேர முத்திரைகளை முடக்குவதன் மூலம், அட்டவணையில் created_at மற்றும் updated_at நெடுவரிசைகள் இல்லையென்றால் சிக்கல்களைத் தவிர்க்கலாம்.
அடுத்த படி வரையறுப்பது தேடுபொறி காட்சி மற்றும் AJAX கோரிக்கைகள் இரண்டையும் கையாளும் வழிகள்மிகவும் பொதுவான ஒரு திட்டம், காட்சியைக் காண்பிக்க GET வழியையும், நிகழ்நேர வினவல்களைப் பெற வடிவமைக்கப்பட்ட POST வழியையும் ஒருங்கிணைக்கிறது:
use Illuminate\Support\Facades\Route;
use App\Http\Controllers\BuscadorController;
Route::get('/', function () {
return view('welcome');
});
Route::get('buscador', [BuscadorController::class, 'index']);
Route::post('buscador', [BuscadorController::class, 'buscar']);
ரூட் ரூட் ஒரு வரவேற்பு காட்சியைத் தருகிறது, அதே நேரத்தில் URL /தேடல் தேடல் செயல்பாட்டிற்காக ஒதுக்கப்பட்டுள்ளது.கட்டுப்படுத்தியின் index() முறை படிவத்தையும் தேடல் உள்ளீட்டையும் காட்டுகிறது, அதே நேரத்தில் search() முறை உலாவியிலிருந்து அனுப்பப்படும் ஒத்திசைவற்ற கோரிக்கைகளை செயலாக்குகிறது.
கட்டுப்படுத்தியில் நீங்கள் மிகவும் நடைமுறைக்குரிய வடிவத்தை செயல்படுத்தலாம்: பிழை ஏற்பட்டால் இயல்புநிலை மறுமொழி வரிசையைத் தயாரிக்கவும். மேலும் அது உண்மையில் செல்லுபடியாகும் AJAX கோரிக்கையாக இருக்கும்போது மற்றும் வினவல் சிக்கல்கள் இல்லாமல் செயல்படுத்தப்படும்போது மட்டுமே அதை மேலெழுதும்.
கட்டுப்படுத்தி ஒரு இருக்கலாம் ஒத்த அமைப்பு இது:
namespace App\Http\Controllers;
use App\Models\Pais;
use Illuminate\Http\Request;
class BuscadorController extends Controller
{
public function index()
{
return view('welcome');
}
public function buscar(Request $request)
{
$response = [
'success' => false,
'message' => 'Hubo un error',
];
if ($request->ajax()) {
$data = Pais::where('nombre', 'like', $request->texto.'%')
->take(10)
->get();
$response = [
'success' => true,
'message' => 'Consulta correcta',
'data' => $data,
];
}
return response()->json($response);
}
}
இந்த கட்டத்தில் உங்களிடம் ஏற்கனவே உள்ளது முழுமையான பின்தள சுழற்சி: உள்வரும் AJAX கோரிக்கை, அது AJAX தானா என்பதைச் சரிபார்த்தல், விரும்பும் இடத்தில் வினவல் செய்தல் மற்றும் முடிவுகளை வரம்பிடுதல் தரவுத்தளத்தை ஓவர்லோட் செய்வதைத் தவிர்க்க take(10) ஐப் பயன்படுத்தி ஒரு நியாயமான எண்ணுக்கு அனுப்பவும். பதில் எப்போதும் JSON இல் அனுப்பப்படும், இது முன்பக்கத்தின் வேலையை பெரிதும் எளிதாக்குகிறது.
எதிர்வினைத் தேடலுக்கான பிளேடு பார்வை மற்றும் ஜாவாஸ்கிரிப்ட் பெறுதல்
மாதிரி, வழிகள் மற்றும் கட்டுப்படுத்தி தயாராக இருப்பதால், புலப்படும் பகுதியை உருவாக்க வேண்டிய நேரம் இது: முடிவுகளைக் காண்பிக்க ஒரு தேடல் புலம் மற்றும் ஒரு தொகுதி கொண்ட ஒரு படிவம்., மேலும் பின்னணியில் கோரிக்கைகளைச் செய்வதற்குப் பொறுப்பான ஜாவாஸ்கிரிப்ட்.
பிளேடு பார்வை மிகவும் எளிமையானதாக இருக்கலாம், இதை நம்பி CSRF டோக்கன் POST கோரிக்கைகளைச் சரிபார்க்கவும், பயன்படுத்த வசதியான தேடல் உள்ளீட்டிலும் லாராவெல் செலுத்துகிறது:
<!DOCTYPE html>
<html lang="{{ str_replace('_', '-', app()->getLocale()) }}">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<strong><meta name="csrf-token" content="{{ csrf_token() }}"></strong>
<title>Laravel</title>
</head>
<body>
<form action="" method="post">
<input type="search" name="texto" id="buscar">
</form>
<div id="resultado"></div>
<script>
window.addEventListener('load', function () {
const buscar = document.getElementById('buscar');
const resultado = document.getElementById('resultado');
buscar.addEventListener('keyup', function () {
fetch('/buscador', {
method: 'post',
body: JSON.stringify({ texto: buscar.value }),
headers: {
'Content-Type': 'application/json',
'X-Requested-With': 'XMLHttpRequest',
'X-CSRF-Token': document.head.querySelector('[name~="csrf-token"][content]').content,
},
})
.then(response => response.json())
.then(data => {
let html = '';
if (data.success) {
html += '<ul>';
for (let i in data.data) {
html += '<li>' + data.data[i].nombre + '</li>';
}
html += '<ul>';
} else {
html += 'No existen resultados';
}
resultado.innerHTML = html;
});
});
});
</script>
</body>
</html>
இந்த எடுத்துக்காட்டில் ஸ்கிரிப்ட் தேடல் உள்ளீட்டில் விசைஅப் நிகழ்வைக் கேளுங்கள்.ஒவ்வொரு விசை அழுத்தமும் /search பாதைக்கு ஒரு fetch கோரிக்கையைத் தூண்டுகிறது. புலத்தின் தற்போதைய உரை JSON வடிவத்தில் அனுப்பப்படுகிறது, மேலும் X-Requested-With போன்ற முக்கிய தலைப்புகள், Laravel இன் சொந்த பாதுகாப்பைத் தவிர்ப்பதற்கான CSRF டோக்கனுடன் சேர்த்து, அது AJAX என்பதைக் குறிக்க சேர்க்கப்பட்டுள்ளன.
பதில் வந்ததும், அது JSON ஆக மாற்றப்பட்டு மாறும் வகையில் உருவாக்கப்படுகிறது. முடிவுகளுடன் கூடிய ஒரு சிறிய HTML பட்டியல்.அல்லது வினவல் எந்த தரவையும் தராதபோது "எந்த முடிவுகளும் கிடைக்கவில்லை" போன்ற செய்தி. இவை அனைத்தும் பக்கத்தை மீண்டும் ஏற்றாமல், பயனருக்கு இயல்பான முறையில்.
இந்த வடிவத்தை சிறிய UX விவரங்களுடன் மேலும் செம்மைப்படுத்தலாம், எடுத்துக்காட்டாக a ஐச் சேர்ப்பது தாமதம் (டிபவுன்ஸ்) ஏதாவது தோல்வியடையும் போது இடைமுகம் உறைந்து போவதைத் தடுக்க, விசை அழுத்தங்களுக்கு இடையில், ஒரு ஏற்றியைக் காட்டவும் அல்லது பிணைய பிழைகளைக் கையாளவும்.
jQuery ஐப் பயன்படுத்தி Laravel மற்றும் AJAX உடன் நேரடி தேடல்.
இப்போதெல்லாம் ஃபெட்ச் அதிக இடத்தைப் பிடித்திருந்தாலும், jQuery AJAX இன்னும் மிகவும் பிரபலமாக உள்ளது. மரபு திட்டங்களில் அல்லது ஏற்கனவே செயல்படுத்தப்பட்ட குழுக்களில். யோசனை சரியாக ஒன்றே: பயனர் தட்டச்சு செய்வதைப் பிடிக்கவும், ஒத்திசைவற்ற கோரிக்கையைச் செய்யவும் மற்றும் DOM ஐப் புதுப்பிக்கவும்.
நேரடித் தேடலுக்கான Laravel இல் jQuery உடன் ஒரு பொதுவான பணிப்பாய்வு பொதுவாக இந்த அடிப்படை படிகளை உள்ளடக்கியது: ஒரு குறிப்பிட்ட வழியை வரையறுக்கவும், ஒரு பிரத்யேக கட்டுப்படுத்தியை உருவாக்கவும், தேடல் உள்ளீட்டைக் கொண்டு பிளேடு காட்சியை உருவாக்கவும். இறுதியாக, நீங்கள் தட்டச்சு செய்யும் போது AJAX ஐத் தூண்டும் jQuery குறியீட்டைச் சேர்க்கவும்.
செயல்முறை இப்படிச் செயல்படுகிறது: பயனர் தட்டச்சு செய்யத் தொடங்கும் போது, jQuery சேவையகத்திற்கு ஒரு வினவலை அனுப்புகிறது. தேடல் சரத்துடன். Laravel தரவுத்தளத்தில் உள்ள தகவல்களை வடிகட்டுகிறது, பொருந்தக்கூடிய முடிவுகளுடன் ஒரு JSON ஐ வழங்குகிறது, மேலும் jQuery பொருத்தங்களை பிரதிபலிக்க பக்கத்தில் ஒரு HTML கொள்கலனைப் புதுப்பிக்கிறது, அனைத்தும் மில்லி விநாடிகளில்.
jQuery ஐப் பயன்படுத்துவதன் நன்மை என்னவென்றால் இது AJAX இன் தொடரியலை மிகவும் சுருக்கமாகக் கூறுகிறது. உங்கள் திட்டத்தில் ஏற்கனவே நூலகம் இருந்தால் அதைப் படிப்பது மிகவும் எளிது. இருப்பினும், நீங்கள் நவீன ஜாவாஸ்கிரிப்ட் மற்றும் நேட்டிவ் ஃபெட்சுடன் வேலை செய்ய முடிந்தால் தேவையில்லாத கூடுதல் சார்புநிலையைச் சேர்க்கிறீர்கள்.
Alpine.js உடன் முன்பக்கத்தில் நிகழ்நேர வடிகட்டுதல் மற்றும் தேடல்
காட்டப்படும் தரவு ஒப்பீட்டளவில் சிறியதாக இருக்கும்போது (எடுத்துக்காட்டாக, 50 க்கும் குறைவான பொருட்கள்), சிக்கலான தேடல்களுடன் ஒரு பின்தளத்தை அமைப்பது எப்போதும் மதிப்புக்குரியது அல்ல. அந்த சந்தர்ப்பங்களில், மிகவும் வசதியான விருப்பம் Alpine.js மூலம் உலாவியில் நேரடியாக வடிகட்டவும்பயனர் தட்டச்சு செய்யும் போது சேவையகத்திற்கு கோரிக்கைகளை வைக்காமல்.
ஒவ்வொரு உறுப்புக்கும் (எடுத்துக்காட்டாக, பெயர், விளக்கம் மற்றும் வகை சிறிய எழுத்துக்களில்) ஒரு தேடல் சரத்தை முன்கூட்டியே கணக்கிட்டு, அதை ஒரு தரவு-தேடல்-உரை பண்புக்கூறில் சேமித்து, மீதமுள்ளவற்றை Alpine.js கையாள அனுமதிப்பதே இதன் யோசனை. எழுதப்பட்ட உரையின்படி கூறுகளைக் காட்டு அல்லது மறை. ஒரு தேடல் புலத்தில்.
Alpine.js கூறு இதைப் போன்ற ஒரு அமைப்பைக் கொண்டிருக்கலாம்: வடிகட்டி பொருட்கள்
{
search: '',
hasResults: true,
selectedValue: '',
init() {
this.$watch('search', () => this.filterItems());
this.$nextTick(() => this.$refs.searchInput?.focus());
},
filterItems() {
const searchLower = this.search.toLowerCase().trim();
const cards = this.$el.querySelectorAll('.item-card');
let visibleCount = 0;
cards.forEach(card => {
const text = card.dataset.searchText || '';
const isVisible = searchLower === '' || text.includes(searchLower);
card.style.display = isVisible ? '' : 'none';
if (isVisible) visibleCount++;
});
this.hasResults = visibleCount > 0;
},
}
பார்வையில், ஒவ்வொரு அட்டை அல்லது தரவு வரிசையும் ஒரு பண்புக்கூறைக் கொண்டிருக்கும் ஏற்கனவே சிறிய எழுத்துக்களில் தயாரிக்கப்பட்ட உரையுடன் தரவு-தேடல்-உரைஎனவே, வடிகட்டி ஜாவாஸ்கிரிப்டில் உள்ள includes() செயல்பாடாகக் குறைக்கப்படுகிறது, இது குறுகிய பட்டியல்களுக்கு மிக வேகமாக இருக்கும்:
<input type="search" x-model="search" x-ref="searchInput" placeholder="Buscar..." />
<div>
<div class="item-card" data-search-text="formulario contacto simple">
<h3>Formulario de contacto</h3>
<p>Formulario de contacto simple</p>
</div>
</div>
கூடுதலாக, நீங்கள் ஒரு வெற்று நிலை தொகுதியை மட்டுமே காட்ட முடியும் தற்போதைய தேடல் வார்த்தைக்கு எந்த முடிவுகளும் இல்லை.தேடலை வெற்று சரத்திற்கு மீட்டமைக்கும் பொத்தானைக் கொண்டு உரையை மாற்ற அல்லது புலத்தை அழிக்க பயனரை அழைக்கிறது.
இந்த அணுகுமுறை தெளிவான நன்மைகளைக் கொண்டுள்ளது: தேடலின் போது சர்வர் அழைப்புகள் எதுவும் இல்லை.இந்த தொடர்பு கிட்டத்தட்ட உடனடியானது, மேலும் தர்க்கம் மிகவும் உள்ளூர் ரீதியாகவும் பிழைத்திருத்தம் செய்வதற்கு எளிதாகவும் உள்ளது. இது விரைவான தேர்வாளர்கள், உருப்படி தேர்வு மாதிரிகள் அல்லது லாராவெல் பக்கத்தில் உட்பொதிக்கப்பட்ட சிறிய பட்டியல்களுக்கு ஏற்றது.
லாராவெல் ஸ்கவுட்: சிறப்பு இயந்திரங்களுடன் முழு உரை தேடல்.
விஷயங்கள் தீவிரமாகி உங்களுக்குத் தேவைப்படும்போது வேகமான, பொருத்தமான மற்றும் அளவிடக்கூடிய முழு உரை தேடல்கள்Laravel இல் உள்ள இயற்கையான பாதை Laravel Scout ஆகும். Scout என்பது ஒரு ஒருங்கிணைப்பு அடுக்கு ஆகும், இது உங்கள் Eloquent மாதிரிகளை Algolia, Meilisearch, உங்கள் சொந்த தரவுத்தளம், நினைவகத்தில் உள்ள சேகரிப்புகள் அல்லது வெளிப்புற கட்டுப்படுத்திகள் மூலம் Elasticsearch போன்ற தேடுபொறிகளுடன் எளிதாக இணைக்க அனுமதிக்கிறது.
ஸ்கவுட்டைத் தொடங்க, வழக்கமான விஷயம் என்னவென்றால் ஒரு புதிய லாராவெல் திட்டத்தை உருவாக்கவும் அல்லது ஏற்கனவே உள்ள ஒன்றை மீண்டும் பயன்படுத்தவும்.அதைத் தொடங்க, Docker ஐப் பயன்படுத்தவும் (எடுத்துக்காட்டாக, Laravel Sail உடன்) பின்னர் Composer உடன் நூலகத்தை நிறுவவும். அது முடிந்ததும், scout.php உள்ளமைவு கோப்பை வெளியிட்டு, நீங்கள் பயன்படுத்த விரும்பும் இயக்கிக்கு ஏற்ப சூழல் மாறிகளை சரிசெய்யவும்.
ஒரு பொதுவான பணிப்பாய்வு, ஸ்கவுட் வித் கம்போசரை நிறுவி, அதன் உள்ளமைவை வெளியிடுவது மற்றும் SCOUT_QUEUE=true உடன் அட்டவணைப்படுத்தல் வரிசையை செயல்படுத்தவும். .env கோப்பில், வள-தீவிர செயல்பாடுகள் பின்னணியில் செயலாக்கப்படுவதை உறுதிசெய்து, பயன்பாட்டு மறுமொழி நேரங்களை மேம்படுத்துகின்றன. கூடுதலாக, DB_HOST நீங்கள் பயன்படுத்தும் தரவுத்தளத்தை சுட்டிக்காட்டுவதை உறுதிசெய்ய வேண்டும், இது நீங்கள் Docker கொள்கலன்களைப் பயன்படுத்தினால் மிகவும் முக்கியமானது.
ஒரு மாடல் ஸ்கவுட் தேடல்களில் பங்கேற்க, அது அவசியம் தேடக்கூடிய பண்பைச் சேர்ப்பதன் மூலம் அதைத் தேடக்கூடியது என்று வெளிப்படையாகக் குறிக்கஉதாரணமாக, உங்களிடம் ஒரு ரயில் மாதிரி இருந்தால், அது ஒரு தலைப்பு புலத்துடன் கூடிய ரயில்களின் அட்டவணையைக் குறிக்கிறது, அதை நீங்கள் இவ்வாறு வரையறுக்கலாம்:
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
use Laravel\Scout\Searchable;
class Train extends Model
{
use Searchable;
protected $fillable = ['title'];
public function searchableAs()
{
return 'trains_index';
}
}
தேடக்கூடியAs முறை அனுமதிக்கிறது தேடுபொறியில் குறியீட்டு பெயரைத் தனிப்பயனாக்குங்கள்.மாதிரியிலிருந்து பெறப்பட்ட இயல்புநிலை பெயரைப் பயன்படுத்துவதற்குப் பதிலாக, ஸ்கவுட் பொறுப்பேற்கிறது. இங்கிருந்து, தேர்ந்தெடுக்கப்பட்ட இயக்கியைப் பொறுத்து, தொலைநிலை அல்லது உள்ளூர் குறியீட்டுடன் உருவாக்கம், புதுப்பித்தல் மற்றும் நீக்குதல் செயல்பாடுகளை ஒத்திசைப்பதை ஸ்கவுட் கையாளுகிறது.
அல்கோலியாவுடன் லாராவெல் ஸ்கவுட்: மின்னல் வேக SaaS தேடல்
அல்கோலியா என்பது ஒரு SaaS சேவையாகும், இதில் கவனம் செலுத்துகிறது அதிக அளவிலான தரவுகளில் மிக விரைவான மற்றும் பொருத்தமான தேடல்களை வழங்குதல்.இது குறியீடுகள், பொருத்த விதிகள், ஒத்த சொற்கள் போன்றவற்றை நிர்வகிப்பதற்கான ஒரு வலைப் பலகத்தைக் கொண்டுள்ளது, மேலும் ஸ்கவுட் மற்றும் அதிகாரப்பூர்வ PHP கிளையன்ட் மூலம் லாராவெலுடன் மிகச் சிறப்பாக ஒருங்கிணைக்கிறது.
Scout உடன் Algolia ஐப் பயன்படுத்த, நீங்கள் அதன் PHP கிளையண்டை Composer உடன் நிறுவ வேண்டும், உங்கள் சான்றுகளை .env கோப்பில் (பயன்பாட்டு ID மற்றும் Admin API விசை) பதிவு செய்ய வேண்டும், மேலும் SCOUT_DRIVER=algolia ஐ அமைக்கவும் இந்த எஞ்சினைப் பயன்படுத்த ஸ்கவுட்டைச் சொல்ல. அல்கோலியா பேனலில் இருந்து நீங்கள் பயன்பாட்டு ஐடி மற்றும் நிர்வாக விசை இரண்டையும் பெறலாம்.
சூழல் உள்ளமைக்கப்பட்டவுடன், நீங்கள் போன்ற முறைகளைப் பயன்படுத்தலாம் பயிற்சி::தேடல்('உரை')->பக்கப்பக்கம்(6) அட்டவணைப்படுத்தப்பட்ட புலங்களில் தேடல்களைச் செய்ய உங்கள் கட்டுப்படுத்திகளுக்கு நேரடியாகச் சென்று, பக்கவாட்டு எலோக்வென்ட் வடிவத்தில் முடிவுகளைப் பெற்று, பிளேடு பார்வைக்கு அனுப்பத் தயாராக இருக்கும்.
உதாரணமாகஉங்களிடம் ஒரு கட்டுப்படுத்தி இருக்கலாம். குறியீட்டு இது அனைத்து ரயில்களையும் பட்டியலிடுகிறது அல்லது தலைப்புத் தேடல் அளவுரு பெறப்பட்டால் தேடலைச் செய்கிறது, மேலும் குறியீட்டில் புதிய ரயில்களைச் செருகுவதற்கான ஒரு உருவாக்கு முறை:
public function index(Request $request)
{
if ($request->has('titlesearch')) {
$trains = Train::search($request->titlesearch)->paginate(6);
} else {
$trains = Train::paginate(6);
}
return view('Train-search', compact('trains'));
}
public function create(Request $request)
{
$this->validate($request, ['title' => 'required']);
Train::create($request->all());
return back();
}
தொடர்புடைய பார்வையில், நீங்கள் இணைக்கலாம் புதிய ரயில்களைப் பதிவு செய்வதற்கான படிவம் மற்றும் சமர்ப்பித்தவுடன் தேடலைத் தூண்டும் தலைப்புத் தேடல் புலத்துடன் கூடிய மற்றொரு GET படிவம். பின்னர் நீங்கள் ரயில்களின் தொகுப்பை மீண்டும் மீண்டும் செய்து அவற்றின் புலங்களை ஒரு அட்டவணையில் காட்ட வேண்டும், Laravel உருவாக்கிய பக்கமாக்கல் இணைப்புகளைப் பயன்படுத்திக் கொள்ள வேண்டும்.
மெய்லிசர்ச், தரவுத்தளம் மற்றும் சேகரிப்புகளுடன் ஸ்கவுட் செய்யுங்கள்.
நீங்கள் வெளிப்புற சேவைகளைத் தவிர்க்க விரும்பினால், மெய்லிசர்ச் என்பது ஒரு திறந்த மூல தேடுபொறி ஆகும். இதை நீங்கள் உள்ளூரில் அல்லது உங்கள் உள்கட்டமைப்பில் பயன்படுத்தலாம். Scout, Algolia-வைப் போலவே Meilisearch-உடன் ஒருங்கிணைக்கிறது, இயக்கியை மாற்றி MEILISEARCH_HOST மற்றும் MEILISEARCH_KEY மாறிகளை .env கோப்பில் சேர்ப்பதன் மூலம்.
அதைப் பயன்படுத்த, நீங்கள் Meilisearch PHP கிளையண்டை நிறுவி, சரிசெய்யவும் SCOUT_DRIVER=மைலி தேடல் மற்றும் MEILISEARCH_HOST ஐ நிகழ்வு URL க்கு சுட்டிக்காட்டவும் (எடுத்துக்காட்டாக, http://127.0.0.1:7700). உங்களிடம் ஏற்கனவே முந்தைய பதிவுகள் இருந்தால், அவற்றை php artisan scout:import "App\Models\Train" என்ற கட்டளையுடன் அட்டவணைப்படுத்தலாம், இதனால் இயந்திரம் அவற்றைக் கிடைக்கும்.
சிறிய அல்லது மிதமான பயன்பாடுகளில், நீங்கள் இவற்றையும் தேர்வு செய்யலாம் ஸ்கவுட் டிரைவர் தரவுத்தளம்இது உங்கள் MySQL அல்லது PostgreSQL தரவுத்தளத்தில் முழு உரை குறியீடுகள் மற்றும் LIKE கட்டளைகளைப் பயன்படுத்துகிறது. இந்த விஷயத்தில், உங்களுக்கு வெளிப்புற சேவை தேவையில்லை; Scout தரவுத்தளத்தை அதன் தேடுபொறியாகப் பயன்படுத்த SCOUT_DRIVER=database ஐ அமைக்கவும்.
மற்றொரு சுவாரஸ்யமான விருப்பம் இயக்கி சேகரிப்பு, இது நினைவகத்தில் எலோக்வென்ட் சேகரிப்புகளில் வேலை செய்கிறது.இந்த இயந்திரம் WHERE பிரிவுகள் மற்றும் சேகரிப்பு வடிகட்டலைப் பயன்படுத்தி முடிவுகளை வடிகட்டுகிறது, மேலும் Laravel ஆல் ஆதரிக்கப்படும் எந்த தரவுத்தளத்துடனும் இணக்கமானது. நீங்கள் `SCOUT_DRIVER=collection` ஐப் பயன்படுத்தி அல்லது குறிப்பிட்ட அமைப்புகளுக்கு Scout உள்ளமைவு கோப்பை சரிசெய்வதன் மூலம் இதை செயல்படுத்தலாம்.
எக்ஸ்ப்ளோரரைப் பயன்படுத்தி மீள் தேடலுடன் ஒருங்கிணைப்பு
உங்கள் தேடலுக்குத் தேவைப்பட்டால் பெரிய அளவிலான தரவு மற்றும் நிகழ்நேர பகுப்பாய்வுடன் பணிபுரிதல்Elasticsearch ஒரு உன்னதமானது. Laravel சுற்றுச்சூழல் அமைப்பில், Scout உடன் அதை ஒருங்கிணைப்பதற்கான ஒரு நவீன வழி, உங்கள் மாதிரிகள் மற்றும் Elasticsearch கிளஸ்டருக்கு இடையே ஒரு பாலமாகச் செயல்படும் Explorer கட்டுப்படுத்தியைப் பயன்படுத்துவதாகும்.
இதைச் செய்ய, டாக்கர் வழக்கமாகப் பயன்படுத்தப்படுகிறது, வழக்கமான சேவைகளுக்கு (Laravel, MySQL, Redis, Meilisearch, முதலியன) கூடுதலாக, ஒரு பணக்கார டாக்கர்-இசையமைப்புக் கோப்புடன், மீள் தேடல் மற்றும் கிபானா கொள்கலன்கள்பின்னர் நீங்கள் jeroen-g/explorer தொகுப்பை Composer வழியாக நிறுவி, எந்த மாதிரிகள் அட்டவணைப்படுத்தப்பட வேண்டும் என்பதைக் குறிக்க அதன் உள்ளமைவு கோப்பை வெளியிடுங்கள்.
config/explorer.php கோப்பில், உங்கள் மாதிரிகளை indexes விசையின் கீழ் பதிவு செய்யலாம், எடுத்துக்காட்டாக, சேர்ப்பதன் மூலம் பயன்பாடு\மாடல்கள்\ரயில்::வகுப்புகூடுதலாக, நீங்கள் .env கோப்பில் SCOUT_DRIVER=elastic உடன் ஸ்கவுட் டிரைவரை எலாஸ்டிக் ஆக மாற்றுகிறீர்கள், இதனால் எல்லாம் Elasticsearch ஐ சுட்டிக்காட்டுகிறது.
ரயில் மாதிரிக்குள், ஆராயப்பட்ட இடைமுகம் செயல்படுத்தப்பட்டு, அந்த முறை மேலெழுதப்பட வேண்டும். மேப்பபிள்ஏஎஸ்இது குறியீட்டிற்கு அனுப்பப்படும் புலங்களின் வரைபடத்தை வரையறுக்கிறது. ஒரு குறைந்தபட்ச உதாரணம்:
use JeroenG\Explorer\Application\Explored;
use Laravel\Scout\Searchable;
class Train extends Model implements Explored
{
use Searchable;
protected $fillable = ['title'];
public function mappableAs(): array
{
return [
'id' => $this->id,
'title' => $this->title,
];
}
}
இனிமேல், அதே ஸ்கவுட் இடைமுகத்தைப் பயன்படுத்தி நீங்கள் Elasticsearch இல் தேடல்களைத் தொடங்கலாம்., மிகக் குறைந்த மறுமொழி நேரங்கள் மற்றும் இந்த இயந்திரத்தின் முழு வினவல் சக்தியிலிருந்து பயனடைகிறது, ஆனால் லாராவெல் சுற்றுச்சூழல் அமைப்பை விட்டு வெளியேறாமல்.
இந்த அனைத்து அணுகுமுறைகளுடனும் - ஃபெட்ச் அல்லது jQuery உடன் அடிப்படை தானியங்குநிரப்புதல் முதல், Alpine.js உடன் முன்பக்க வடிகட்டுதல் வரை, Laravel Scout மற்றும் பல்வேறு இயக்கிகளுடன் முழு உரை தேடல்கள் வரை - நிகழ்நேர தேடல்களை செயல்படுத்துவதற்கான பரந்த அளவிலான விருப்பங்களை லாராவெல் உங்களுக்கு வழங்குகிறது. உங்கள் திட்டத்தின் அளவு, உங்களுக்குத் தேவையான செயல்திறன் மற்றும் நீங்கள் பராமரிக்கத் தயாராக உள்ள உள்கட்டமைப்பு ஆகியவற்றிற்கு ஏற்ப வடிவமைக்கப்பட்டுள்ளது.
பொருளடக்கம்
- லாராவெலில் நிகழ்நேர தேடல் என்றால் என்ன, அடிப்படைகள் எவ்வாறு செயல்படுகின்றன?
- அடிப்படை நிகழ்நேர தேடுபொறிக்கான மாதிரி, வழிகள் மற்றும் கட்டுப்படுத்தி.
- எதிர்வினைத் தேடலுக்கான பிளேடு பார்வை மற்றும் ஜாவாஸ்கிரிப்ட் பெறுதல்
- jQuery ஐப் பயன்படுத்தி Laravel மற்றும் AJAX உடன் நேரடி தேடல்.
- Alpine.js உடன் முன்பக்கத்தில் நிகழ்நேர வடிகட்டுதல் மற்றும் தேடல்
- லாராவெல் ஸ்கவுட்: சிறப்பு இயந்திரங்களுடன் முழு உரை தேடல்.
- அல்கோலியாவுடன் லாராவெல் ஸ்கவுட்: மின்னல் வேக SaaS தேடல்
- மெய்லிசர்ச், தரவுத்தளம் மற்றும் சேகரிப்புகளுடன் ஸ்கவுட் செய்யுங்கள்.
- எக்ஸ்ப்ளோரரைப் பயன்படுத்தி மீள் தேடலுடன் ஒருங்கிணைப்பு