Udhëzues

Si të shtosh kërkimin në aplikacionin tënd: nga filtrat e thjeshtë te kërkimi i plotë me tekst

Për të shtuar kërkimin në aplikacionin tënd, fillo me gjënë më të thjeshtë që funksionon: një kuti kërkimi që thërret një rrugë në server, e cila filtron rreshtat e bazës së të dhënave duke i krahasuar pyetjen me disa kolona, plus filtra për gjëra si kategoria ose çmimi. Kur kjo nuk mjafton — të duhet renditje sipas rëndësisë, zgjerim i fjalëve ose shumë regjistrime — kalo te kërkimi me tekst të plotë i bazës së të dhënave, dhe kalo te një motor kërkimi i hostuar vetëm nëse të duhet tolerancë e fortë ndaj gabimeve ose rezultate të menjëhershme mbi të dhëna shumë të mëdha. Çfarëdo që zgjedhësh, kërkimi duhet të respektojë lejet: përdoruesit nuk duhet kurrë të gjejnë regjistrime që nuk u lejohet t'i shohin.

Çfarë do të thotë "kërkim" për aplikacionin tënd

Kërkimi mbulon disa gjëra të ndryshme, dhe shumica e aplikacioneve kanë nevojë për më shumë se një:

  • Kërkim me fjalë kyçe: një kuti teksti — "gjej listimet që përmendin 'kopësht'".
  • Filtra: zgjedhje të strukturuara — kategoria, qyteti, intervali i çmimit, data, statusi.
  • Renditje: më të rejat, më të lirat, më të rëndësishmet.
  • Plotësim automatik: sugjerime ndërsa shkruan.
  • Tolerancë ndaj gabimeve: "restorant" ende gjen "restorant" me gabim të shkruar.

Për një drejtori, një faqe pune ose një dyqan, filtrat shpesh janë më të rëndësishëm se kutia e tekstit. Vendos cilat prej këtyre të duhen vërtet para se të zgjedhësh një mjet.

Opsionet e tua

QasjaSi funksiononE mirë përKufizime
Filtrim në shfletuesNgarko listën, filtroje me JavaScriptLista të vogla publike (disa qindra artikuj)Dërgon të gjitha të dhënat te çdo vizitor; i ngadalshëm me lista të mëdha
Përputhje me model në bazën e të dhënavePyetje në server si "emri përmban tekstin", pa dallim midis shkronjave të mëdha dhe të voglaAplikacione të vogla deri të mesme, mjete administrimiPa renditje sipas rëndësisë; mund të ngadalësohet në tabela të mëdha; pa zgjerim fjalësh
Kërkim me tekst të plotë në bazën e të dhënavePostgres indekson fjalët dhe i rendit përputhjetShumica e aplikacioneve me shumë përmbajtjeI dobët ndaj gabimeve drejtshkrimore përveç nëse shton përputhje të pasaktë
Përputhje e pasaktë (trigrame)Postgres krahason sekuencat e karaktereve për ngjashmëriEmra, fusha të shkurtra, tolerancë ndaj gabimeveKërkon një shtesë dhe një indeks; rregullimi kërkon kujdes
Motor kërkimi i hostuarNjë shërbim i veçantë indekson të dhënat e tua (Algolia, Meilisearch, Typesense, Elasticsearch dhe të tjera)Katalogë të mëdhenj, kërkim i menjëhershëm, tolerancë e fortë ndaj gabimeveNjë shërbim tjetër për ta mbajtur sinkron, për ta paguar dhe për ta siguruar

Nëse të dhënat e tua tashmë jetojnë në Postgres, kërkimi i tij i integruar me tekst të plotë është një zgjidhje e fortë e ndërmjetme. Ai e ndan tekstin në fjalë, i redukton ato në rrënjë (kështu që "duke vrapuar" përputhet me "vrapoj"), injoron fjalët e zakonshme dhe mund t'i rendisë rezultatet sipas sa mirë përputhen. Me indeksin e duhur, mbetet i shpejtë edhe në tabela të mëdha.

Prompte shembull

Një fillim i thjeshtë:

Shto një kuti kërkimi dhe filtra në faqen e listimeve. Kërkimi duhet ta krahasojë pyetjen me titullin dhe përshkrimin, pa dallim midis shkronjave të mëdha dhe të vogla. Filtrat: kategoria (listë rënëse), qyteti (listë rënëse) dhe çmimi maksimal. Bëj kërkimin në server me një rrugë API të faqosur, 20 rezultate për faqe. Mbaj kërkimin dhe filtrat në URL, që rezultatet të mund të ndahen dhe butoni i kthimit të punojë. Shfaq një gjendje miqësore kur asgjë nuk përputhet.

Kalimi te kërkimi me tekst të plotë:

Kalo kërkimin e listimeve te kërkimi me tekst të plotë i Postgres mbi titullin (me peshë më të lartë) dhe përshkrimin. Shto indeksin e duhur, rendit rezultatet sipas rëndësisë dhe mbaj filtrat dhe faqosjen ekzistuese. Mos ndrysho asnjë të dhënë ekzistuese.

Shtimi i tolerancës ndaj gabimeve për emrat:

Shto përputhje të pasaktë te emri i biznesit, që gabimet e vogla drejtshkrimore të gjejnë ende rezultate. Përdor ngjashmërinë me trigrame nëse është e disponueshme, me një indeks, dhe kthehu te kërkimi aktual nëse nuk është.

Hap pas hapi

  1. Listo çfarë kërkojnë njerëzit. Cilat fusha (titulli, përshkrimi, etiketat, emri)? Cilat filtra? Pyet disa përdorues të vërtetë, nëse mundesh.
  2. Fillo nga serveri. Shto një rrugë API që merr pyetjen dhe filtrat, dhe kthen një faqe rezultatesh. Mos ngarko çdo gjë në shfletues.
  3. Zbato lejet në pyetje. Nëse përdoruesit shohin vetëm regjistrimet e tyre, ose vetëm ato të publikuara, ai kusht i përket të njëjtës pyetje me kërkimin.
  4. Shto faqosjen që nga dita e parë — numra faqesh ose "ngarko më shumë".
  5. Vendos gjendjen e kërkimit në URL (për shembull ?q=kopësht&city=leeds). Lidhjet e ndara, butoni i kthimit që punon dhe motorët e kërkimit mund t'i indeksojnë faqet e filtruara nëse dëshiron.
  6. Vonesë për kërkimin gjatë shkrimit. Prit disa qindra milisekonda pasi të ndalet shkrimi para se të bësh pyetjen, që të mos dërgosh një kërkesë për çdo shtypje tasti.
  7. Shto indekse kur të dish cilat kolona filtron dhe kërkon.
  8. Përmirëso te kërkimi me tekst të plotë, pastaj te përputhja e pasaktë, pastaj te një motor i hostuar — vetëm kur hapi më i thjeshtë dështon për përdoruesit e vërtetë.
  9. Testo me të dhëna që duken reale: qindra ose mijëra rreshta, karaktere të çuditshme, pyetje bosh, pyetje shumë të gjata, gjuhë të tjera nëse i mbështet.

Gabime të zakonshme

  • Ngarkimi i të gjithë tabelës në shfletues. Është në rregull për 50 artikuj, dhe e dhimbshme për 50,000, dhe ekspozon çdo regjistrim — përfshirë ata që përdoruesi nuk duhet t'i shohë.
  • Kërkim që injoron lejet. Kërkimi është një rrugë e zakonshme rrjedhjeje: një regjistrim privat ose një draft shfaqet sepse pyetja e kërkimit harroi kushtin "vetëm të mijat" ose "vetëm të publikuarat".
  • Ndërtimi i SQL nga hyrja e papërpunuar e përdoruesit. Përdor gjithmonë pyetje me parametra. Një ndërtues me AI zakonisht e bën këtë, por kontrollo nëse sheh vargje të bashkuara me njëra-tjetrën.
  • Pa gjendje bosh. "Asnjë rezultat" me një sugjerim (pastro filtrat, kontrollo drejtshkrimin) i mban njerëzit të mos largohen.
  • Pa indekse. Kërkimi duket mirë me të dhëna testuese dhe ngadalësohet sa rriten të dhënat reale.
  • Kërcimi direkt te një shërbim kërkimi. Atëherë duhet të mbash një kopje të dytë të të dhënave sinkron, të trajtosh fshirjet dhe të sigurosh një grup tjetër çelësash — shpesh pa një fitim të dukshëm.
  • Harresa e celularit. Filtrat duhet të përshtaten në telefon; një sirtar filtrash ose një panel i palosshëm zakonisht funksionon më mirë se një shtyllë anësore.

Lista e kontrollit

  • E di cilat fusha kërkohen dhe cilat filtra ekzistojnë
  • Kërkimi ekzekutohet në server dhe kthen rezultate të faqosura
  • Pyetja zbaton të njëjtat leje si pjesa tjetër e aplikacionit
  • Hyrja e përdoruesit kalon si parametër, kurrë nuk bashkohet në SQL
  • Gjendja e kërkimit jeton në URL
  • Shkrimi është me vonesë
  • Kolonat e kërkuara dhe të filtruara janë të indeksuara
  • Gjendjet bosh, pa rezultate dhe gabimi janë të qarta
  • Testuar me vëllime realiste të dhënash dhe hyrje të ngatërruar

Shtimi i kërkimit me Mythex

Në një aplikacion të ndërtuar me Mythex, të dhënat zakonisht jetojnë në bazën e të dhënave Postgres të projektit, kështu që mund të fillosh me prompte-t e mësipërme: fillimisht përputhje me model, pastaj kërkim me tekst të plotë në Postgres kur të duhet renditje sipas rëndësisë. Nëse dëshiron një motor kërkimi të hostuar, sill llogarinë dhe çelësin tënd, ruaje si sekret të projektit, dhe kërko nga agjenti ta indeksojë dhe ta pyesë nga serveri, siç përshkruhet te Integro çdo API.

Kërkimi është në zemër të shumë aplikacioneve: shiko si të ndërtosh një faqe drejtorie, si të ndërtosh një faqe pune dhe si të ndërtosh një treg për të parë si përshtatet me pjesën tjetër të produktit.

Pyetje

Cili është mënyra më e lehtë për të shtuar kërkimin në një aplikacion?

Nëse të dhënat e tua janë në një bazë të dhënash, një rrugë në server që filtron rreshtat me një përputhje pa dallim midis shkronjave të mëdha dhe të vogla në disa kolona është fillimi më i lehtë. Për një listë të vogël që tashmë është ngarkuar në shfletues, filtrimi në shfletues është edhe më i thjeshtë.

A më duhet Algolia ose Elasticsearch për kërkim?

Zakonisht jo në fillim. Kërkimi me tekst të plotë i Postgres trajton mirë përputhjen e fjalëve, renditjen dhe nga disa mijëra deri në miliona rreshta. Një motor kërkimi i hostuar vlen të përdoret kur ke nevojë për tolerancë të fortë ndaj gabimeve drejtshkrimore, rezultate të menjëhershme ndërsa shkruan mbi të dhëna të mëdha, ose rregullim të avancuar të rëndësisë.

Pse kërkimi im nuk gjen rezultate kur ka gabime drejtshkrimore?

Përputhja bazë dhe kërkimi standard me tekst të plotë kërkojnë fjalët ashtu siç janë shkruar (ose rrënjët e tyre), kështu që një gabim drejtshkrimor nuk gjen asgjë. Të duhet përputhje e pasaktë, si ngjashmëria me trigrame në Postgres ose një motor kërkimi me tolerancë ndaj gabimeve.

A duhet që kërkimi të ekzekutohet në shfletues apo në server?

Në server, për çdo gjë që shkon përtej një liste të vogël publike. Kërkimi në server shkallëzohet, respekton lejet dhe nuk e dërgon të gjithë grupin e të dhënave te çdo vizitor.

Mythex · Pricing · Ndërtoni çdo gjë me AI · Shablone faqesh dhe aplikacionesh · Mythex në krahasim · Fjalori i ndërtimit të aplikacioneve me AI · Mjete falas për ndërtimin e aplikacioneve me 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 Slovenščina Soomaali Srpski Svenska Kiswahili தமிழ் తెలుగు ไทย Tagalog Türkçe Українська اردو Tiếng Việt 简体中文 繁體中文(香港) 繁體中文(台灣)