Útmutatók

Keresés hozzáadása az appodhoz: az egyszerű szűrőktől a teljes szövegű keresésig

Ahhoz, hogy keresést adj az appodhoz, kezdd a legegyszerűbb működő megoldással: egy keresőmezővel, amely szerveroldali útvonalat hív, ez pedig az adatbázis-sorokat a lekérdezés néhány oszlopon történő egyeztetésével szűri, a kategóriára vagy az árra vonatkozó szűrőkkel együtt. Ha ez már nem elég – relevancia szerinti rangsorolásra, szótőre keresésre vagy sok rekordra van szükséged –, térj át az adatbázisod teljes szövegű keresésére, és csak akkor válts hosztolt keresőmotorra, ha erős elírás-toleranciára vagy azonnali találatokra van szükséged nagy adatmennyiségen. Bármelyiket is választod, a keresésnek tiszteletben kell tartania a jogosultságokat: a felhasználók soha ne találjanak meg olyan rekordot, amelyet nem láthatnak.

Mit jelent a „keresés” az appodnál

A keresés több különböző dolgot takar, és a legtöbb appnak egynél többre van szüksége:

  • Kulcsszavas keresés: egy szövegmező – „keresd azokat a hirdetéseket, amelyek a »kert« szót említik”.
  • Szűrők: strukturált választások – kategória, város, árkategória, dátum, állapot.
  • Rendezés: legújabb, legolcsóbb, legrelevánsabb.
  • Automatikus kiegészítés: javaslatok gépelés közben.
  • Elírás-tolerancia: a „restuarant” is megtalálja a „restaurant”-ot.

Egy könyvtárnál, állásportálnál vagy boltnál a szűrők gyakran fontosabbak, mint a szövegmező. Döntsd el, melyekre van valóban szükséged, mielőtt eszközt választasz.

Lehetőségek

MegközelítésHogyan működikJó ehhezKorlátok
Szűrés a böngészőbenBetöltöd a listát, és JavaScripttel szűrödKis nyilvános listák (néhány száz elem)Minden adatot elküld minden látogatónak; nagy listáknál lassú
Adatbázis-mintaillesztésSzerveri lekérdezés: „a név tartalmazza a szöveget”, kis- és nagybetű-érzéketlenKis és közepes appok, admin eszközökNincs rangsorolás; nagy táblákon lassú lehet; nincs szótövezés
Adatbázis teljes szövegű kereséseA Postgres szavakra bontja és rangsorolja az egyezéseketA legtöbb tartalomgazdag appElírásokra gyenge, hacsak nem adsz hozzá fuzzy illesztést
Fuzzy illesztés (trigramok)A Postgres karaktersorozatok hasonlóságát hasonlítja összeNevek, rövid mezők, elírás-toleranciaBővítmény és index kell; a hangolás időt igényel
Hosztolt keresőmotorKülön szolgáltatás indexeli az adataidat (Algolia, Meilisearch, Typesense, Elasticsearch és mások)Nagy katalógusok, azonnali keresés, erős elírás-toleranciaMég egy szolgáltatás, amelyet szinkronban kell tartani, fizetni érte és biztonságban tartani

Ha az adataid már a Postgresben vannak, annak beépített teljes szövegű keresése erős középutat jelent. A szöveget szavakra bontja, szótövekre redukálja (így a „running” egyezik a „run”-nal), figyelmen kívül hagyja a gyakori szavakat, és rangsorolhatja a találatokat az egyezés minősége szerint. Megfelelő indexszel nagy táblákon is gyors marad.

Példa promptok

Egyszerű kezdés:

Adj egy keresőmezőt és szűrőket a hirdetések oldalához. A keresés a lekérdezést a címmel és a leírással egyezteti, kis- és nagybetű-érzéketlenül. Szűrők: kategória (legördülő), város (legördülő) és maximális ár. A keresést szerveren végezd, lapozható API-útvonalon, oldalanként 20 találattal. A keresés és a szűrők legyenek az URL-ben, hogy az eredmények megoszthatók legyenek, a vissza gomb pedig működjön. Ha semmi nem egyezik, mutass barátságos üres állapotot.

Átállás teljes szövegű keresésre:

Állítsd át a hirdetések keresését Postgres teljes szövegű keresésre a címen (magasabb súllyal) és a leíráson. Adj hozzá a megfelelő indexet, rangsorold a találatokat relevancia szerint, és tartsd meg a meglévő szűrőket és lapozást. Ne változtass meglévő adatokon.

Elírás-tolerancia neveknél:

Adj hozzá fuzzy illesztést a cégnévre, hogy a kis elírások is találatot adjanak. Ha elérhető, használj trigram-hasonlóságot, indexszel, és ha nem, térj vissza a jelenlegi kereséshez.

Lépésről lépésre

  1. Sorold fel, mit keresnek az emberek. Mely mezők (cím, leírás, címkék, név)? Mely szűrők? Ha tudsz, kérdezz meg néhány valódi felhasználót.
  2. Kezdd szerveroldalon. Adj hozzá egy API-útvonalat, amely a lekérdezést és a szűrőket fogadja, és egy oldalnyi találatot ad vissza. Ne tölts be mindent a böngészőbe.
  3. Alkalmazd a jogosultságokat a lekérdezésben. Ha a felhasználók csak a saját rekordjaikat vagy csak a közzétetteket látják, ez a feltétel ugyanabba a lekérdezésbe tartozik, mint a keresés.
  4. Adj lapozást az elejétől. Oldalszámok vagy „több betöltése”.
  5. Tedd a keresési állapotot az URL-be (például ?q=garden&city=leeds). A megosztható linkek, a működő vissza gomb, és a keresőrobotok is bejárhatják a szűrt oldalakat, ha ezt szeretnéd.
  6. Késleltesd a gépelés közbeni keresést. Néhány száz milliszekundumot várj a gépelés befejezése után, mielőtt lekérdeznél, hogy ne menjen kérés minden billentyűleütésre.
  7. Adj indexeket, amint tudod, mely oszlopokra szűrsz és keresel.
  8. Fejlessz tovább: teljes szövegű keresés, majd fuzzy illesztés, majd hosztolt motor – csak akkor, ha az egyszerűbb lépés valódi felhasználóknál már nem elég.
  9. Teszteld valósághű adatokkal: több száz vagy több ezer sorral, furcsa karakterekkel, üres lekérdezésekkel, nagyon hosszú lekérdezésekkel, és más nyelveken, ha támogatod őket.

Gyakori hibák

  • Az egész tábla betöltése a böngészőbe. Ötven elemnél rendben van, ötvenezernél fájdalmas, és minden rekordot kiteszel – még azokat is, amelyeket a felhasználó nem láthat.
  • Jogosultságokat figyelmen kívül hagyó keresés. A keresés gyakori szivárgási pont: egy privát vagy piszkozat-rekord megjelenik, mert a lekérdezésből kimaradt a „csak az enyém” vagy „csak a közzétett” feltétel.
  • SQL építése nyers felhasználói bemenetből. Mindig paraméterezett lekérdezéseket használj. Az MI-alapú építők általában így tesznek, de nézd meg, ha stringeket látsz összefűzve.
  • Nincs üres állapot. A „nincs találat” üzenet javaslattal (szűrők törlése, a helyesírás ellenőrzése) megakadályozza, hogy az emberek elhagyják az oldalt.
  • Nincsenek indexek. A keresés tesztadatokkal rendben van, de ahogy nő a valódi adat, lelassul.
  • Rögtön keresőszolgáltatáshoz nyúlni. Ekkor az adatodnak egy második példányát kell szinkronban tartanod, kezelned a törléseket, és egy újabb kulcskészletet biztonságban tartanod – gyakran látható haszon nélkül.
  • A mobil elfelejtése. A szűrőknek elférniük kell a telefonon; a szűrőfiók vagy összecsukható panel általában jobb, mint az oldalsáv.

Ellenőrzőlista

  • Tudod, mely mezők kerülnek keresésbe, és mely szűrők léteznek
  • A keresés a szerveren fut, és lapozott eredményeket ad vissza
  • A lekérdezés ugyanazokat a jogosultságokat érvényesíti, mint az app többi része
  • A felhasználói bemenet paraméterként kerül át, soha nem fűződik SQL-be
  • A keresési állapot az URL-ben van
  • A gépelés késleltetve van
  • A keresett és szűrt oszlopok indexelve vannak
  • Az üres, a nincs-találat és a hiba állapotok egyértelműek
  • Tesztelve valósághű adatmennyiséggel és rendetlen bemenettel

Keresés hozzáadása a Mythexszel

A Mythexen épített appokban az adatok általában a projekt saját Postgres-adatbázisában élnek, így a fenti promptokkal lehet kezdeni: először mintaillesztés, majd Postgres teljes szövegű keresés, amikor rangsorolásra van szükséged. Ha hosztolt keresőmotort szeretnél, hozd a saját fiókodat és kulcsodat, tárold projekt-titokként, és kérd meg az ügynököt, hogy a szerveren indexelje és kérdezze le, ahogy az Integrate any API recept leírja.

A keresés sok app szíve: a könyvtárwebhely építése, az állásportál építése és a piactér építése útmutatók mutatják be, hogyan illeszkedik a keresés a termék többi részéhez.

Kérdések

Mi a legegyszerűbb módja a keresés hozzáadásának egy appban?

Ha az adataid adatbázisban vannak, a legegyszerűbb kezdet egy szerveroldali útvonal, amely kis- és nagybetű-érzéketlen egyezéssel szűri a sorokat néhány oszlopon. Egy kis listánál, amely már be van töltve a böngészőbe, a szűrés a böngészőben még ennél is egyszerűbb.

Kell Algolia vagy Elasticsearch a kereséshez?

Kezdetben általában nem. A Postgres teljes szövegű keresése jól kezeli a szóillesztést, a rangsorolást, és a több ezer-millió soros adatállományt. Hosztolt keresőmotor akkor éri meg, ha erős elírás-toleranciára, azonnali találatokra a nagy adatmennyiségen, vagy összetett relevancia-hangolásra van szükséged.

Miért nem talál a keresésem elírással?

Az alap illesztés és a szabványos teljes szövegű keresés a beírt szavakat (vagy azok tőalakját) keresi, így az elírás elsiklik. Fuzzy illesztésre van szükséged, például trigram-hasonlóságra a Postgresben, vagy olyan keresőmotorra, amely tolerálja az elírásokat.

A böngészőben vagy a szerveren fusson a keresés?

A szerveren bármi olyan esetben, ami egy kis nyilvános listánál több. A szerveroldali keresés skálázódik, betartja a jogosultságokat, és nem küldi el az egész adatállományodat minden látogatónak.

Mythex · Pricing · Építs bármit AI-val · Weboldal- és alkalmazássablonok · A Mythex összehasonlítva · AI-alapú alkalmazásépítési szószedet · Ingyenes eszközök AI-alapú alkalmazásépítéshez · English

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