Fulltextové vyhledávání
Laravix indexuje obsah pro fulltextové vyhledávání přes Laravel Scout. Rovnou po instalaci funguje databázový driver bez jakékoli infrastruktury; pro vyhledávání odolné vůči překlepům a s rankingem zapojíte Meilisearch. Tento článek pokrývá, co se indexuje, nastavení driverů a reindexaci.
Co se indexuje
Prohledávatelný model je Laravix\Cms\Models\Content. Každý záznam indexuje:
titleaslug,search_text— čistý text vytažený z HTML vizuálního builderu, klasických bloků a všech hodnot polí (strop 60 000 znaků), automaticky obnovovaný při uložení,- plus
site_id,typealocalepro filtrování.
Prohledávatelný je jen obsah, který je publikovaný (a po datu publikace); stažení z webu nebo smazání ho z indexu odstraní automaticky.
Kdo index používá
- headless endpoint
GET /api/v1/search(API reference), - vyhledávací pole docs pluginu (
/docs/search), - jakékoli vaše vlastní volání
Content::search('dotaz').
Volba driveru
Driver se nastavuje v .env:
SCOUT_DRIVER=database
| Driver | Setup | Kvalita vyhledávání |
|---|---|---|
collection |
žádný | Základní hledání podřetězců; stačí pro miniaturní weby |
database |
žádný | LIKE dotazy v SQL |
meilisearch |
běžící Meilisearch server | Odolné vůči překlepům, rankované, rychlé — doporučeno pro produkci |
Nastavení Meilisearch
-
Rozběhněte instanci Meilisearch (ve vývojovém monorepu ji Sail už obsahuje).
-
Nakonfigurujte
.env:SCOUT_DRIVER=meilisearch MEILISEARCH_HOST=http://127.0.0.1:7700 MEILISEARCH_KEY=vas-master-key -
Odešlete nastavení indexu — Laravix ho má předpřipravené v
config/scout.php(filtrovatelné:site_id,type,locale; prohledávané:title,slug,search_text):php artisan scout:sync-index-settings -
Naimportujte existující obsah:
php artisan scout:import "Laravix\Cms\Models\Content"
Od té chvíle udržují uložení index synchronizovaný automaticky. Na vytížených webech nastavte SCOUT_QUEUE=true, ať aktualizace indexu běží na queue workeru.
Reindexace
Po hromadných importech, změně driveru nebo podezřelých výsledcích:
php artisan scout:flush "Laravix\Cms\Models\Content"
php artisan scout:import "Laravix\Cms\Models\Content"
Řešení problémů
Vyhledávání nic nevrací. Zkontrolujte, že obsah je publikovaný, driver nastavený a (u Meilisearch) import proběhl bez chyb — webový dashboard Meilisearch na portu 7700 obsah indexu ukáže.
Výsledky ignorují web nebo jazyk. Filtrování podle site_id a locale vyžaduje nastavení indexu — po změně driveru spusťte scout:sync-index-settings.
Úpravy se ve výsledcích neobjevují. Se SCOUT_QUEUE=true čekají aktualizace indexu na queue worker — ověřte, že běží.