Vývojář Fulltextové vyhledávání

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:

  • title a slug,
  • 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, type a locale pro 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

  1. Rozběhněte instanci Meilisearch (ve vývojovém monorepu ji Sail už obsahuje).

  2. Nakonfigurujte .env:

    SCOUT_DRIVER=meilisearch
    MEILISEARCH_HOST=http://127.0.0.1:7700
    MEILISEARCH_KEY=vas-master-key
    
  3. 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
    
  4. 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ěží.

Související články

Laravix Documentation · 14.07.2026
Star on GitHub