Vodiči

Kako dodati pretraživanje u svoju aplikaciju: od jednostavnih filtera do potpunog tekstualnog pretraživanja

Za dodavanje pretraživanja u aplikaciju počnite s najjednostavnijim rješenjem koje radi: polje za pretragu koje poziva rutu na poslužitelju, koja filtrira retke baze podataka usporedbom upita s nekoliko stupaca, plus filtere poput kategorije ili cijene. Kada to nije dovoljno, na primjer kada trebate rangiranje relevantnosti, svođenje riječi na korijen ili mnogo zapisa, prijeđite na potpuno tekstualno pretraživanje vaše baze podataka, a hostiranu tražilicu koristite samo ako trebate jaku toleranciju na pogreške ili trenutne rezultate nad vrlo velikim podacima. Što god odaberete, pretraživanje mora poštivati dozvole: korisnici nikada ne smiju pronaći zapise koje ne smiju vidjeti.

Što znači „pretraživanje” za vašu aplikaciju

Pretraživanje obuhvaća nekoliko različitih stvari, a većina aplikacija treba više od jedne:

  • Pretraga ključnih riječi: polje za tekst, primjerice „pronađi oglase koji spominju ‚vrt’”.
  • Filteri: strukturirani izbori: kategorija, grad, raspon cijena, datum, status.
  • Sortiranje: najnovije, najjeftinije, najrelevantnije.
  • Automatsko dovršavanje: prijedlozi dok tipkate.
  • Tolerancija na pogreške: „restuarant” i dalje pronalazi „restaurant”.

Za imenik, oglasnik za posao ili trgovinu filteri često su važniji od tekstualnog polja. Odlučite što vam stvarno treba prije odabira alata.

Vaše mogućnosti

PristupKako radiDobro zaOgraničenja
Filtriranje u preglednikuUčitajte popis i filtrirajte ga u JavaScriptuMali javni popisi (nekoliko stotina stavki)Svaki posjetitelj dobije sve podatke; sporo s velikim popisima
Podudaranje uzorka u baziUpit na poslužitelju „naziv sadrži tekst”, bez razlike između velikih i malih slovaMale do srednje aplikacije, alati za administratoreNema rangiranja; može biti sporo na velikim tablicama; nema svođenja na korijen
Potpuno tekstualno pretraživanje u baziPostgres indeksira riječi i rangira podudaranjaVećina aplikacija s puno sadržajaSlabo s pogreškama u kucanju bez dodavanja neodređenog podudaranja
Neodređeno podudaranje (trigrami)Postgres uspoređuje nizove znakova po sličnostiImena, kratka polja, tolerancija na pogreškeTreba proširenje i indeks; podešavanje traje
Hostirana tražilicaZasebna usluga indeksira vaše podatke (Algolia, Meilisearch, Typesense, Elasticsearch i druge)Velike kataloge, trenutno pretraživanje, jaka tolerancija na pogreškeJoš jedna usluga za sinkronizaciju, plaćanje i osiguranje

Ako su vaši podaci već u Postgresu, njegovo ugrađeno potpuno tekstualno pretraživanje je dobra srednja opcija. Razbija tekst na riječi, svodi ih na korijene (tako se „running” podudara s „run”), zanemaruje česte riječi i može rangirati rezultate prema tome koliko dobro odgovaraju. S pravim indeksom ostaje brzo i na velikim tablicama.

Primjeri uputa

Jednostavan početak:

Dodaj polje za pretragu i filtere na stranicu s oglasima. Pretraga treba podudarati upit s naslovom i opisom, bez razlike između velikih i malih slova. Filteri: kategorija (padajući izbornik), grad (padajući izbornik) i najveća cijena. Pretraživanje radi na poslužitelju kroz API rutu sa straničenjem, 20 rezultata po stranici. Zadrži pretragu i filtere u URL-u kako se rezultati mogu dijeliti i kako gumb natrag radi. Prikaži prijateljsku poruku kada ništa ne odgovara.

Nadogradnja na potpuno tekstualno pretraživanje:

Prebaci pretraživanje oglasa na Postgres potpuno tekstualno pretraživanje po naslovu (s većom težinom) i opisu. Dodaj ispravan indeks, rangiraj rezultate po relevantnosti i zadrži postojeće filtere i straničenje. Ne mijenjaj nijedan postojeći podatak.

Dodavanje tolerancije na pogreške za imena:

Dodaj neodređeno podudaranje po nazivu tvrtke kako bi manje pogreške u kucanju i dalje pronalazile rezultate. Koristi sličnost trigramima ako je dostupna, s indeksom, i vrati se na trenutno pretraživanje ako nije.

Korak po korak

  1. Popišite što ljudi traže. Koja polja (naslov, opis, oznake, ime)? Koji filteri? Ako možete, pitajte nekoliko stvarnih korisnika.
  2. Počnite na poslužitelju. Dodajte API rutu koja prima upit i filtere te vraća jednu stranicu rezultata. Ne učitavajte sve u preglednik.
  3. Primijenite dozvole u upitu. Ako korisnici vide samo svoje zapise ili samo objavljene, to uvjet mora biti u istom upitu kao i pretraga.
  4. Dodajte straničenje od početka: brojevi stranica ili „učitaj više”.
  5. Stavite stanje pretrage u URL (primjerice ?q=vrt&city=leeds). Dijeljive poveznice, ispravan gumb natrag i tražilice mogu indeksirati filtrirane stranice ako to želite.
  6. Odgodite pretraživanje dok tipkate. Pričekajte nekoliko stotina milisekundi nakon što prestanete tipkati prije upita, kako ne biste slali zahtjev za svaki pritisak tipke.
  7. Dodajte indekse kada znate po kojim stupcima filtrirate i pretražujete.
  8. Nadogradite na potpuno tekstualno pretraživanje, zatim na neodređeno podudaranje, pa na hostiranu tražilicu, ali samo kada jednostavniji korak ne uspije za stvarne korisnike.
  9. Testirajte s podacima koji izgledaju stvarno: stotine ili tisuće redaka, neobični znakovi, prazni upiti, vrlo dugi upiti, drugi jezici ako ih podržavate.

Česte greške

  • Učitavanje cijele tablice u preglednik. Dobro za 50 stavki, boli za 50.000, a izlaže svaki zapis, uključujući one koje korisnik ne smije vidjeti.
  • Pretraga koja ignorira dozvole. Pretraga je čest curenje podataka: privatni zapis ili nacrt se pojavi jer upit nije imao uvjet „samo moji” ili „samo objavljeni”.
  • Stvaranje SQL-a iz sirovog korisničkog unosa. Uvijek koristite parametrizirane upite. AI alat to obično radi, ali provjerite vidite li nizove koji se lijepe zajedno.
  • Nema praznog stanja. „Nema rezultata” s prijedlogom (očisti filtere, provjeri pravopis) sprječava da ljudi odu.
  • Nema indeksa. Pretraga izgleda dobro s testnim podacima i usporava kako rastu stvarni podaci.
  • Odmah prelazak na uslugu pretraživanja. Tada morate držati drugu kopiju podataka sinkroniziranu, obrađivati brisanja i osiguravati još jedan skup ključeva, često bez vidljive koristi.
  • Zaboravljen mobitel. Filteri moraju stati na telefon; izbornik filtera ili sklopivi panel obično radi bolje od bočne trake.

Kontrolni popis

  • Znate koja se polja pretražuju i koji filteri postoje
  • Pretraga radi na poslužitelju i vraća straničene rezultate
  • Upit primjenjuje ista pravila dozvola kao i ostatak aplikacije
  • Korisnički unos se prosljeđuje kao parametri, nikada se ne lijepi u SQL
  • Stanje pretrage živi u URL-u
  • Tipkanje je odgođeno
  • Pretraživani i filtrirani stupci su indeksirani
  • Prazna stanja, stanja bez rezultata i greške su jasna
  • Testirano s realističnim količinama podataka i neurednim unosom

Dodavanje pretraživanja s Mythexom

U aplikaciji izgrađenoj na Mythexu podaci obično žive u Postgres bazi podataka projekta, pa možete započeti s gornjim uputama: najprije podudaranje uzoraka, a zatim potpuno tekstualno pretraživanje Postgresa kada trebate rangiranje. Ako želite hostiranu tražilicu, donesite svoj račun i ključ, spremite ga kao tajnu projekta i zamolite agenta da indeksira i pretražuje s poslužitelja, kako je opisano u Integriraj bilo koji API.

Pretraživanje je srž mnogih aplikacija: pogledajte kako izraditi web imenik, kako izraditi oglasnik za posao i kako izraditi tržnicu da vidite kako se uklapa u ostatak proizvoda.

Pitanja

Koji je najlakši način za dodavanje pretraživanja u aplikaciju?

Ako su vaši podaci u bazi podataka, najlakši početak je ruta na poslužitelju koja filtrira retke usporedbom bez razlike između velikih i malih slova na nekoliko stupaca. Za mali popis koji je već učitan u pregledniku filtriranje u pregledniku je još jednostavnije.

Trebam li Algolia ili Elasticsearch za pretraživanje?

Obično ne na početku. Postgresovo potpuno tekstualno pretraživanje dobro podnosi podudaranje riječi, rangiranje i tisuće do milijune redaka. Hostirana tražilica isplati se kada trebate snažnu toleranciju na pogreške u kucanju, trenutne rezultate dok tipkate nad velikim podacima ili napredno podešavanje relevantnosti.

Zašto moje pretraživanje ne pronalazi rezultate s pogreškama u kucanju?

Osnovno podudaranje i standardno potpuno tekstualno pretraživanje traže riječi kako su upisane (ili njihove korijene), pa pogrešno napisana riječ promaši. Trebate neodređeno podudaranje, primjerice sličnost trigramima u Postgresu ili tražilicu s tolerancijom na pogreške.

Treba li pretraživanje raditi u pregledniku ili na poslužitelju?

Na poslužitelju za sve što nije malen javni popis. Pretraživanje na poslužitelju se skalira, poštuje dozvole i ne šalje cijeli skup podataka svakom posjetitelju.

Mythex · Pricing · Izradite bilo što uz AI · Predlošci za web stranice i aplikacije · Mythex u usporedbi · Rječnik izrade aplikacija uz AI · Besplatni alati za izradu aplikacija uz AI · English

English አማርኛ العربية Български বাংলা Bosanski Català Čeština Dansk Deutsch Ελληνικά Español Español (España) Eesti فارسی Suomi Français Français (Canada) ગુજરાતી हिन्दी 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 Slovenščina Soomaali Shqip Srpski Svenska Kiswahili தமிழ் తెలుగు ไทย Tagalog Türkçe Українська اردو Tiếng Việt 简体中文 繁體中文(香港) 繁體中文(台灣)