మీ యాప్కు సెర్చ్ ఎలా జోడించాలి: సరళమైన ఫిల్టర్ల నుండి ఫుల్-టెక్స్ట్ సెర్చ్ వరకు
మీ యాప్కు సెర్చ్ జోడించడానికి, పనిచేసే అత్యంత సరళమైన దానితో ప్రారంభించండి: సర్వర్ మార్గాన్ని పిలిచే సెర్చ్ బాక్స్, అది క్వెరీని కొన్ని కాలమ్లతో సరిపోల్చి మీ డేటాబేస్ వరుసలను ఫిల్టర్ చేస్తుంది, మరియు వర్గం లేదా ధర వంటి వాటి కోసం ఫిల్టర్లు. అది సరిపోనప్పుడు — మీకు రెలెవెన్స్ ర్యాంకింగ్, పద స్టెమ్మింగ్ లేదా చాలా రికార్డులు అవసరమైనప్పుడు — మీ డేటాబేస్ యొక్క ఫుల్-టెక్స్ట్ సెర్చ్కు మారండి, మరియు పెద్ద డేటాపై బలమైన టైపో టాలరెన్స్ లేదా తక్షణ ఫలితాలు అవసరమైతేనే హోస్ట్ చేసిన సెర్చ్ ఇంజిన్కు వెళ్లండి. మీరు ఏది ఎంచుకున్నా, సెర్చ్ అనుమతులను గౌరవించాలి: వినియోగదారులు తమకు చూడటానికి అనుమతి లేని రికార్డులను ఎప్పుడూ కనుగొనకూడదు.
మీ యాప్కు "సెర్చ్" అంటే ఏమిటి
సెర్చ్ కొన్ని విభిన్న విషయాలను కవర్ చేస్తుంది, మరియు చాలా యాప్లకు ఒకటి కంటే ఎక్కువ అవసరం:
- కీవర్డ్ సెర్చ్: ఒక టెక్స్ట్ బాక్స్ — "'garden' ప్రస్తావించే లిస్టింగ్లను కనుగొనండి".
- ఫిల్టర్లు: నిర్మాణాత్మక ఎంపికలు — వర్గం, నగరం, ధర పరిధి, తేదీ, స్థితి.
- క్రమబద్ధీకరణ: కొత్తవి, చౌకైనవి, అత్యంత రెలెవెంట్.
- ఆటోకంప్లీట్: టైప్ చేస్తుండగా సూచనలు.
- టైపో టాలరెన్స్: "restuarant" ఇంకా "restaurant"ను కనుగొంటుంది.
డైరెక్టరీ, జాబ్ బోర్డ్ లేదా దుకాణం కోసం, టెక్స్ట్ బాక్స్ కంటే ఫిల్టర్లు తరచుగా ఎక్కువ ముఖ్యమైనవి. ఏ సాధనం ఎంచుకునే ముందు వీటిలో మీకు నిజంగా ఏమి అవసరమో నిర్ణయించండి.
మీ ఎంపికలు
| విధానం | ఎలా పనిచేస్తుంది | దేనికి ఉత్తమం | పరిమితులు |
|---|---|---|---|
| బ్రౌజర్లో ఫిల్టర్ చేయడం | జాబితాను లోడ్ చేసి JavaScriptలో ఫిల్టర్ చేయండి | చిన్న పబ్లిక్ జాబితాలు (కొన్ని వందల అంశాలు) | ప్రతి సందర్శకుడికి మొత్తం డేటా పంపుతుంది; పెద్ద జాబితాలతో నెమ్మది |
| డేటాబేస్ ప్యాటర్న్ మ్యాచ్ | "పేరులో టెక్స్ట్ ఉంది" వంటి సర్వర్ క్వెరీ, కేస్-ఇన్సెన్సిటివ్ | చిన్న నుండి మధ్యస్థ యాప్లు, అడ్మిన్ టూల్స్ | ర్యాంకింగ్ లేదు; పెద్ద టేబుల్లపై నెమ్మది కావచ్చు; స్టెమ్మింగ్ లేదు |
| డేటాబేస్ ఫుల్-టెక్స్ట్ సెర్చ్ | Postgres పదాలను ఇండెక్స్ చేసి మ్యాచ్లను ర్యాంక్ చేస్తుంది | ఎక్కువ కంటెంట్ ఉన్న చాలా యాప్లు | ఫజీ మ్యాచింగ్ జోడిస్తే తప్ప టైపోలతో బలహీనం |
| ఫజీ మ్యాచింగ్ (trigrams) | Postgres సారూప్యత కోసం అక్షర క్రమాలను పోలుస్తుంది | పేర్లు, చిన్న ఫీల్డ్లు, టైపో టాలరెన్స్ | ఎక్స్టెన్షన్ మరియు ఇండెక్స్ అవసరం; ట్యూనింగ్ సమయం తీసుకుంటుంది |
| హోస్ట్ చేసిన సెర్చ్ ఇంజిన్ | ప్రత్యేక సేవ మీ డేటాను ఇండెక్స్ చేస్తుంది (Algolia, Meilisearch, Typesense, Elasticsearch మరియు ఇతరులు) | పెద్ద కేటలాగ్లు, తక్షణ సెర్చ్, బలమైన టైపో టాలరెన్స్ | సమకాలీకరణలో ఉంచాల్సిన, చెల్లించాల్సిన మరియు భద్రపరచాల్సిన మరో సేవ |
మీ డేటా ఇప్పటికే Postgresలో ఉంటే, దాని అంతర్నిర్మిత ఫుల్-టెక్స్ట్ సెర్చ్ ఒక బలమైన మధ్యస్థ మార్గం. ఇది టెక్స్ట్ను పదాలుగా విభజిస్తుంది, వాటిని స్టెమ్లకు తగ్గిస్తుంది (తద్వారా "running" "run"తో సరిపోతుంది), సాధారణ పదాలను విస్మరిస్తుంది, మరియు మ్యాచ్లు ఎంత బాగా సరిపోతాయో బట్టి ఫలితాలను ర్యాంక్ చేయగలదు. సరైన ఇండెక్స్తో ఇది పెద్ద టేబుల్లపై కూడా వేగంగా ఉంటుంది.
ఉదాహరణ ప్రాంప్ట్లు
సరళమైన ప్రారంభం:
లిస్టింగ్ల పేజీకి ఒక సెర్చ్ బాక్స్ మరియు ఫిల్టర్లు జోడించండి. సెర్చ్ క్వెరీని టైటిల్ మరియు వివరణతో కేస్-ఇన్సెన్సిటివ్గా సరిపోల్చాలి. ఫిల్టర్లు: వర్గం (డ్రాప్డౌన్), నగరం (డ్రాప్డౌన్) మరియు గరిష్ట ధర. పేజీకి 20 ఫలితాలతో పేజినేటెడ్ API మార్గంతో సర్వర్లో సెర్చ్ చేయండి. ఫలితాలను పంచుకోవచ్చని మరియు బ్యాక్ బటన్ పనిచేయాలని సెర్చ్ మరియు ఫిల్టర్లను URLలో ఉంచండి. ఏదీ సరిపోనప్పుడు స్నేహపూర్వక ఖాళీ స్థితిని చూపండి.
ఫుల్-టెక్స్ట్ సెర్చ్కు అప్గ్రేడ్ చేయడం:
టైటిల్ (ఎక్కువ వెయిట్తో) మరియు వివరణపై లిస్టింగ్ సెర్చ్ను Postgres ఫుల్-టెక్స్ట్ సెర్చ్కు మార్చండి. సరైన ఇండెక్స్ జోడించండి, ఫలితాలను రెలెవెన్స్ ప్రకారం ర్యాంక్ చేయండి, మరియు ఉన్న ఫిల్టర్లు మరియు పేజినేషన్ను ఉంచండి. ఏ ఉన్న డేటానూ మార్చవద్దు.
పేర్ల కోసం టైపో టాలరెన్స్ జోడించడం:
వ్యాపార పేరుపై ఫజీ మ్యాచింగ్ జోడించండి, తద్వారా చిన్న టైపోలు ఉన్నా ఫలితాలు కనిపిస్తాయి. అందుబాటులో ఉంటే trigram similarityని ఇండెక్స్తో ఉపయోగించండి, లేకపోతే ప్రస్తుత సెర్చ్కు తిరిగి వెళ్లండి.
దశలవారీగా
- ప్రజలు దేని కోసం వెతుకుతారో జాబితా చేయండి. ఏ ఫీల్డ్లు (టైటిల్, వివరణ, ట్యాగ్లు, పేరు)? ఏ ఫిల్టర్లు? వీలైతే కొంతమంది నిజమైన వినియోగదారులను అడగండి.
- సర్వర్-సైడ్లో ప్రారంభించండి. క్వెరీ మరియు ఫిల్టర్లు తీసుకుని ఒక పేజీ ఫలితాలను ఇచ్చే API మార్గాన్ని జోడించండి. ప్రతిదీ బ్రౌజర్లోకి లోడ్ చేయవద్దు.
- క్వెరీలో అనుమతులను వర్తింపజేయండి. వినియోగదారులు తమ స్వంత రికార్డులు మాత్రమే, లేదా ప్రచురించినవి మాత్రమే చూస్తే, ఆ షరతు సెర్చ్తో ఒకే క్వెరీలో ఉండాలి.
- మొదటి రోజు నుండే పేజినేషన్ జోడించండి — పేజీ సంఖ్యలు లేదా "మరిన్ని లోడ్ చేయి".
- సెర్చ్ స్థితిని URLలో ఉంచండి (ఉదాహరణకు
?q=garden&city=leeds). షేర్ చేయగల లింక్లు, పనిచేసే బ్యాక్ బటన్, మరియు మీరు కోరుకుంటే సెర్చ్ ఇంజిన్లు ఫిల్టర్ చేసిన పేజీలను క్రాల్ చేయగలవు. - టైప్ చేస్తుండగా సెర్చ్ను డిబౌన్స్ చేయండి. టైపింగ్ ఆగిన తర్వాత కొన్ని వందల మిల్లీసెకన్లు వేచి ఉండి క్వెరీ చేయండి, తద్వారా ప్రతి కీస్ట్రోక్కు రిక్వెస్ట్ పంపకండి.
- మీరు ఏ కాలమ్లపై ఫిల్టర్ మరియు సెర్చ్ చేస్తారో తెలిసిన తర్వాత ఇండెక్స్లు జోడించండి.
- అప్గ్రేడ్ చేయండి: ఫుల్-టెక్స్ట్ సెర్చ్కు, తర్వాత ఫజీ మ్యాచింగ్కు, తర్వాత హోస్ట్ చేసిన ఇంజిన్కు — సరళమైన దశ నిజమైన వినియోగదారులకు విఫలమైనప్పుడు మాత్రమే.
- వాస్తవిక డేటాతో పరీక్షించండి: వందలు లేదా వేల వరుసలు, విచిత్రమైన అక్షరాలు, ఖాళీ క్వెరీలు, చాలా పొడవైన క్వెరీలు, మీరు మద్దతు ఇస్తే ఇతర భాషలు.
సాధారణ తప్పులు
- మొత్తం టేబుల్ను బ్రౌజర్లోకి లోడ్ చేయడం. 50 అంశాలకు సరే, 50,000కు బాధాకరం, మరియు ప్రతి రికార్డును బహిర్గతం చేస్తుంది — వినియోగదారు చూడకూడనివి కూడా.
- అనుమతులను పట్టించుకోని సెర్చ్. సెర్చ్ ఒక సాధారణ లీక్: క్వెరీ "నావి మాత్రమే" లేదా "ప్రచురించినవి మాత్రమే" షరతును మర్చిపోవడంతో ప్రైవేట్ లేదా డ్రాఫ్ట్ రికార్డ్ కనిపిస్తుంది.
- వినియోగదారు ఇన్పుట్ నుండి SQL నిర్మించడం. ఎల్లప్పుడూ పారామీటర్డ్ క్వెరీలు ఉపయోగించండి. AI బిల్డర్ సాధారణంగా అలా చేస్తుంది, కానీ స్ట్రింగ్లు అతుక్కుంటున్నట్లు కనిపిస్తే తనిఖీ చేయండి.
- ఖాళీ స్థితి లేకపోవడం. సూచనతో (ఫిల్టర్లు క్లియర్ చేయండి, స్పెల్లింగ్ తనిఖీ చేయండి) "ఫలితాలు లేవు" ప్రజలు వెళ్లిపోకుండా ఆపుతుంది.
- ఇండెక్స్లు లేకపోవడం. టెస్ట్ డేటాతో సెర్చ్ బాగానే అనిపిస్తుంది, నిజమైన డేటా పెరిగేకొద్దీ నెమ్మదిస్తుంది.
- నేరుగా సెర్చ్ సేవకు దూకడం. అప్పుడు మీ డేటా యొక్క రెండవ కాపీని సమకాలీకరణలో ఉంచాలి, తొలగింపులను నిర్వహించాలి, మరియు మరో సెట్ కీలను భద్రపరచాలి — తరచుగా కనిపించే లాభం లేకుండానే.
- మొబైల్ను మర్చిపోవడం. ఫిల్టర్లు ఫోన్లో సరిపోవాలి; ఫిల్టర్ డ్రాయర్ లేదా మడతపెట్టే ప్యానెల్ సాధారణంగా సైడ్బార్ కంటే బాగా పనిచేస్తుంది.
చెక్లిస్ట్
- ఏ ఫీల్డ్లు సెర్చ్ చేయబడతాయి మరియు ఏ ఫిల్టర్లు ఉన్నాయో మీకు తెలుసు
- సెర్చ్ సర్వర్లో నడుస్తుంది మరియు పేజినేటెడ్ ఫలితాలను ఇస్తుంది
- క్వెరీ యాప్లోని మిగతా వాటి అదే అనుమతులను అమలు చేస్తుంది
- వినియోగదారు ఇన్పుట్ పారామీటర్లుగా పంపబడుతుంది, ఎప్పుడూ SQLలోకి అతకబడదు
- సెర్చ్ స్థితి URLలో ఉంటుంది
- టైపింగ్ డిబౌన్స్ చేయబడింది
- సెర్చ్ మరియు ఫిల్టర్ చేయబడిన కాలమ్లు ఇండెక్స్ చేయబడ్డాయి
- ఖాళీ, ఫలితాలు-లేని మరియు ఎర్రర్ స్థితులు స్పష్టంగా ఉన్నాయి
- వాస్తవిక డేటా పరిమాణాలు మరియు గందరగోళ ఇన్పుట్తో పరీక్షించబడింది
Mythex తో సెర్చ్ జోడించడం
Mythex పై నిర్మించిన యాప్లో, డేటా సాధారణంగా ప్రాజెక్ట్ యొక్క స్వంత Postgres డేటాబేస్లో ఉంటుంది, కాబట్టి మీరు పైన ఉన్న ప్రాంప్ట్లతో ప్రారంభించవచ్చు: మొదట ప్యాటర్న్ మ్యాచింగ్, ర్యాంకింగ్ అవసరమైనప్పుడు Postgres ఫుల్-టెక్స్ట్ సెర్చ్. మీకు హోస్ట్ చేసిన సెర్చ్ ఇంజిన్ కావాలంటే, మీ స్వంత ఖాతా మరియు కీని తీసుకురండి, దాన్ని ప్రాజెక్ట్ సీక్రెట్గా నిల్వ చేయండి, మరియు ఏ API అయినా ఇంటిగ్రేట్ చేయండి లో వివరించిన విధంగా సర్వర్ నుండి ఇండెక్స్ చేసి క్వెరీ చేయమని ఏజెంట్ను అడగండి.
చాలా యాప్లకు సెర్చ్ కోర్: ఉత్పత్తిలోని మిగతా భాగంలో అది ఎలా సరిపోతుందో చూడటానికి డైరెక్టరీ వెబ్సైట్ ఎలా నిర్మించాలి, జాబ్ బోర్డ్ ఎలా నిర్మించాలి మరియు మార్కెట్ప్లేస్ ఎలా నిర్మించాలి చూడండి.
ప్రశ్నలు
యాప్కు సెర్చ్ జోడించడానికి అత్యంత సులభమైన మార్గం ఏది?
మీ డేటా డేటాబేస్లో ఉంటే, కొన్ని కాలమ్లపై కేస్-ఇన్సెన్సిటివ్ మ్యాచ్తో వరుసలను ఫిల్టర్ చేసే సర్వర్ మార్గం సులభమైన ప్రారంభం. బ్రౌజర్లో ఇప్పటికే లోడ్ అయిన చిన్న జాబితా కోసం, బ్రౌజర్లోనే ఫిల్టర్ చేయడం ఇంకా సరళం.
సెర్చ్ కోసం నాకు Algolia లేదా Elasticsearch అవసరమా?
సాధారణంగా మొదట అవసరం లేదు. Postgres ఫుల్-టెక్స్ట్ సెర్చ్ పద మ్యాచింగ్, ర్యాంకింగ్ మరియు వేల నుండి మిలియన్ల వరుసలను బాగా నిర్వహిస్తుంది. పెద్ద డేటాపై బలమైన టైపో టాలరెన్స్, మీరు టైప్ చేస్తుండగానే తక్షణ ఫలితాలు, లేదా అధునాతన రెలెవెన్స్ ట్యూనింగ్ అవసరమైనప్పుడు హోస్ట్ చేసిన సెర్చ్ ఇంజిన్ విలువైనది.
టైపోలు ఉన్నప్పుడు నా సెర్చ్ ఫలితాలను ఎందుకు కనుగొనడం లేదు?
ప్రాథమిక మ్యాచింగ్ మరియు ప్రామాణిక ఫుల్-టెక్స్ట్ సెర్చ్ టైప్ చేసిన పదాలను (లేదా వాటి స్టెమ్లను) వెతుకుతాయి, కాబట్టి తప్పు స్పెల్లింగ్ తప్పిపోతుంది. మీకు ఫజీ మ్యాచింగ్ అవసరం, ఉదాహరణకు Postgresలో trigram similarity లేదా టైపో టాలరెన్స్ ఉన్న సెర్చ్ ఇంజిన్.
సెర్చ్ బ్రౌజర్లో నడవాలా లేక సర్వర్లో నడవాలా?
చిన్న పబ్లిక్ జాబితాకు మించిన దేనికైనా సర్వర్లో. సర్వర్-సైడ్ సెర్చ్ స్కేల్ అవుతుంది, అనుమతులను గౌరవిస్తుంది, మరియు ప్రతి సందర్శకుడికి మొత్తం డేటాసెట్ను పంపదు.