Príručky

Ako pridať vyhľadávanie do aplikácie: od filtrov po fulltext

Na pridanie vyhľadávania do aplikácie začnite s najjednoduchším riešením, ktoré funguje: vyhľadávacie pole, ktoré volá serverovú trasu, a ta filtruje riadky vašej databázy porovnaním dotazu s niekoľkými stĺpcami, plus filtre pre veci ako kategória alebo cena. Keď to nestačí — potrebujete zoradenie podľa relevancie, skracovanie slov na kmene alebo veľa záznamov — prejdite na fulltextové vyhľadávanie vašej databázy a na hostovaný vyhľadávací nástroj sa prepnite, len ak potrebujete silnú toleranciu voči preklepom alebo okamžité výsledky nad veľmi veľkými dátami. Bez ohľadu na voľbu musí vyhľadávanie rešpektovať oprávnenia: používatelia nikdy nesmú nájsť záznamy, ktoré nesmú vidieť.

Čo „vyhľadávanie“ znamená pre vašu aplikáciu

Vyhľadávanie zahŕňa niekoľko rôznych vecí a väčšina aplikácií potrebuje viac než jednu:

  • Vyhľadávanie kľúčových slov: textové pole — „nájsť inzeráty so slovom ‚záhrada‘“.
  • Filtre: štruktúrované voľby — kategória, mesto, cenové rozpätie, dátum, stav.
  • Zoradenie: najnovšie, najlacnejšie, najrelevantnejšie.
  • Automatické dopĺňanie: návrhy počas písania.
  • Tolerancia voči preklepom: „restauarcia“ stále nájde „reštaurácia“.

Pre adresár, pracovnú ponuku alebo obchod často záležia viac filtre než textové pole. Pred výberom nástroja rozhodnite, ktoré z toho skutočne potrebujete.

Vaše možnosti

PrístupAko fungujeVhodné preLimity
Filtrovanie v prehliadačiNačítať zoznam a filtrovať ho v JavaScripteMalé verejné zoznamy (niekoľko stoviek položiek)Posiela všetky dáta každému návštevníkovi; pri veľkých zoznamoch pomalé
Porovnanie vzoru v databázeServerový dotaz typu „názov obsahuje text“, bez ohľadu na veľkosť písmenMalé až stredné aplikácie, administračné nástrojeŽiadne zoradenie podľa relevancie; môže byť pomalé na veľkých tabuľkách; bez kmeňovania
Fulltextové vyhľadávanie v databázePostgres indexuje slová a zoraďuje zhody podľa relevancieVäčšina aplikácií s veľkým objemom obsahuSlabé pri preklepoch, pokiaľ nepridáte fuzzy porovnanie
Fuzzy porovnanie (trigramy)Postgres porovnáva podobnosť sekvencií znakovMená, krátke polia, tolerancia voči preklepomVyžaduje rozšírenie a index; ladenie si vyžiada čas
Hostovaný vyhľadávací nástrojSamostatná služba indexuje vaše dáta (Algolia, Meilisearch, Typesense, Elasticsearch a ďalšie)Veľké katalógy, okamžité vyhľadávanie, silná tolerancia voči preklepomĎalšia služba na synchronizáciu, platenie a zabezpečenie

Ak vaše dáta už žijú v Postgrese, jeho vstavané fulltextové vyhľadávanie je silný stredný variant. Rozdelí text na slová, zredukuje ich na kmene (takže „running“ sa zhoduje s „run“), ignoruje bežné slová a dokáže zoradiť výsledky podľa toho, ako dobre sa zhodujú. So správnym indexom zostáva rýchly aj na veľkých tabuľkách.

Príkladové prompty

Jednoduchý začiatok:

Pridaj k stránke so zoznamom inzerátov vyhľadávacie pole a filtre. Vyhľadávanie má porovnávať dotaz s názvom a popisom bez ohľadu na veľkosť písmen. Filtre: kategória (rozbaľovací zoznam), mesto (rozbaľovací zoznam) a maximálna cena. Vyhľadávanie rob na serveri pomocou stránkovanej API trasy, 20 výsledkov na stránku. Vyhľadávanie a filtre drž v URL, aby sa výsledky dali zdieľať a aby fungovalo tlačidlo späť. Keď nič nezodpovedá, zobraz priateľský prázdny stav.

Prechod na fulltextové vyhľadávanie:

Prepni vyhľadávanie inzerátov na fulltextové vyhľadávanie Postgres nad názvom (s vyššou váhou) a popisom. Pridaj správny index, zoraď výsledky podľa relevancie a zachovaj existujúce filtre a stránkovanie. Neupravuj žiadne existujúce dáta.

Tolerancia voči preklepom pri menách:

Pridaj fuzzy porovnanie názvu firmy, aby aj malé preklepy našli výsledky. Použi podobnosť trigramov, ak je dostupná, s indexom, a ak nie, vráť sa k súčasnému vyhľadávaniu.

Postup krok za krokom

  1. Zapíšte, čo ľudia hľadajú. Ktoré polia (názov, popis, značky, meno)? Ktoré filtre? Ak môžete, opýtajte sa niekoľkých skutočných používateľov.
  2. Začnite na serveri. Pridajte API trasu, ktorá prijme dotaz a filtre a vráti jednu stránku výsledkov. Nenačítavajte všetko do prehliadača.
  3. Uplatnite oprávnenia v dotaze. Ak používatelia vidia len svoje záznamy alebo len publikované, táto podmienka patrí do rovnakého dotazu ako vyhľadávanie.
  4. Pridajte stránkovanie od prvého dňa — čísla strán alebo „načítať viac“.
  5. Vložte stav vyhľadávania do URL (napríklad ?q=garden&city=leeds). Zdieľateľné odkazy, funkčné tlačidlo späť a vyhľadávače môžu prechádzať filtrované stránky, ak ich chcete indexovať.
  6. Oneskorte vyhľadávanie pri písaní. Po skončení písania počkajte niekoľko stoviek milisekúnd pred dotazom, aby ste neposielali požiadavku pri každom stlačení klávesu.
  7. Pridajte indexy, keď viete, podľa ktorých stĺpcov filtrujete a vyhľadávate.
  8. Prejdite na vyššiu úroveň — fulltextové vyhľadávanie, potom fuzzy porovnanie, potom hostovaný nástroj — len vtedy, keď jednoduchší krok zlyhá pri skutočných používateľoch.
  9. Testujte s realisticky vyzerajúcimi dátami: stovky alebo tisíce riadkov, nezvyčajné znaky, prázdne dotazy, veľmi dlhé dotazy, ďalšie jazyky, ak ich podporujete.

Časté chyby

  • Načítanie celej tabuľky do prehliadača. Pre 50 položiek v poriadku, pre 50 000 bolestivé, a odhalí každý záznam — vrátane tých, ktoré používateľ nemá vidieť.
  • Vyhľadávanie, ktoré ignoruje oprávnenia. Vyhľadávanie je častý únik: súkromný alebo koncept záznamu sa zobrazí, pretože dotaz zabudol na podmienku „len moje“ alebo „len publikované“.
  • Skladanie SQL zo surového vstupu používateľa. Vždy používajte parametrizované dotazy. Nástroj na tvorbu aplikácií pomocou AI to zvyčajne robí, ale skontrolujte, či nevidíte reťazce spájané dohromady.
  • Chýbajúci prázdny stav. „Žiadne výsledky“ s návrhom (zrušiť filtre, skontrolovať pravopis) ľudí udrží, aby neodišli.
  • Chýbajúce indexy. Vyhľadávanie vyzerá dobre s testovacími dátami a spomaľuje, ako rastú skutočné dáta.
  • Okamžitý skok na vyhľadávaciu službu. Potom musíte udržiavať druhú kópiu dát v synchronizácii, riešiť mazanie a zabezpečiť ďalšiu sadu kľúčov — často bez viditeľného zisku.
  • Zabudnutie na mobil. Filtre musia sa zmestiť na telefón; zásuvka filtrov alebo rozbaliteľný panel zvyčajne funguje lepšie než bočný panel.

Kontrolný zoznam

  • Viete, ktoré polia sa prehľadávajú a ktoré filtre existujú
  • Vyhľadávanie beží na serveri a vracia stránkované výsledky
  • Dotaz presadzuje rovnaké oprávnenia ako zvyšok aplikácie
  • Vstup používateľa sa posiela ako parametre, nikdy sa nelepí do SQL
  • Stav vyhľadávania je v URL
  • Písanie je oneskorené (debounce)
  • Prehľadávané a filtrované stĺpce sú indexované
  • Prázdny stav, stav bez výsledkov a stav chyby sú jasné
  • Otestované s realistickými objemami dát a neupraveným vstupom

Pridanie vyhľadávania s Mythex

V aplikácii postavenej na Mythex dáta obvykle žijú v Postgres databáze projektu, takže môžete začať s vyššie uvedenými promptami: najprv porovnanie vzoru, potom fulltextové vyhľadávanie v Postgrese, keď potrebujete zoradenie podľa relevancie. Ak chcete hostovaný vyhľadávací nástroj, prineste si vlastný účet a kľúč, uložte ho ako tajomstvo projektu a požiadajte agenta, aby ho indexoval a dotazoval zo servera, ako je popísané v článku Integrácia ľubovoľného API.

Vyhľadávanie je jadrom mnohých aplikácií: pozrite si, ako sa hodí do zvyšku produktu, v článkoch ako vytvoriť webový adresár, ako vytvoriť portál s pracovnými ponukami a ako vytvoriť tržisko.

Otázky

Aký je najjednoduchší spôsob, ako pridať vyhľadávanie do aplikácie?

Ak sú vaše dáta v databáze, najjednoduchší začiatok je serverová trasa, ktorá filtruje riadky porovnaním textu bez ohľadu na veľkosť písmen v niekoľkých stĺpcoch. Pre malý zoznam, ktorý je už načítaný v prehliadači, je filtrovanie v prehliadači ešte jednoduchšie.

Potrebujem na vyhľadávanie Algolia alebo Elasticsearch?

Zvyčajne nie hneď na začiatku. Fulltextové vyhľadávanie v Postgrese dobre zvláda zhodu slov, rozdeľovanie výsledkov podľa relevancie a tisíce až milióny riadkov. Hostovaný vyhľadávací nástroj sa oplatí, keď potrebujete silnú toleranciu voči preklepom, okamžité výsledky pri písaní nad veľkými dátami alebo pokročilé ladenie relevancie.

Prečo moje vyhľadávanie nenájde výsledky s preklepmi?

Základné porovnanie a štandardné fulltextové vyhľadávanie hľadajú slová tak, ako boli napísané (alebo ich kmene), takže preklep ich minie. Potrebujete fuzzy porovnávanie, napríklad podobnosť trigramov v Postgrese alebo vyhľadávací nástroj s toleranciou voči preklepom.

Má vyhľadávanie bežať v prehliadači alebo na serveri?

Na serveri pre všetko, čo presahuje malý verejný zoznam. Vyhľadávanie na serveri sa škáluje, rešpektuje oprávnenia a neposiela celú vašu databázu každému návštevníkovi.

Mythex · Pricing · Vytvorte čokoľvek s AI · Šablóny webov a aplikácií · Mythex v porovnaní · Slovník pojmov tvorby aplikácií s AI · Bezplatné nástroje na tvorbu aplikácií s AI · English

English አማርኛ العربية Български বাংলা Bosanski Català Čeština Dansk Deutsch Ελληνικά Español Español (España) Eesti فارسی Suomi Français Français (Canada) ગુજરાતી हिन्दी Hrvatski Magyar Հայերեն Bahasa Indonesia Íslenska Italiano 日本語 ქართული Қазақ тілі ಕನ್ನಡ 한국어 Lietuvių Latviešu Македонски മലയാളം Монгол मराठी Bahasa Melayu မြန်မာ Norsk bokmål Nederlands ਪੰਜਾਬੀ Polski Português (Brasil) Português (Portugal) Română Русский Slovenščina Soomaali Shqip Srpski Svenska Kiswahili தமிழ் తెలుగు ไทย Tagalog Türkçe Українська اردو Tiếng Việt 简体中文 繁體中文(香港) 繁體中文(台灣)