તમારી એપમાં સર્ચ કેવી રીતે ઉમેરશો: સાદા ફિલ્ટરથી ફુલ-ટેક્સ્ટ સર્ચ સુધી
તમારી એપમાં સર્ચ ઉમેરવા માટે, સૌથી સરળ કામ કરે તેવી વસ્તુથી શરૂઆત કરો: એક સર્ચ બૉક્સ જે સર્વર રૂટને કૉલ કરે, જે થોડા કૉલમ સાથે ક્વેરી મેચ કરીને તમારી ડેટાબેઝ રો ફિલ્ટર કરે, અને કેટેગરી કે કિંમત જેવી વસ્તુઓ માટે ફિલ્ટર. જ્યારે તે પૂરતું ન હોય — તમને રેલેવન્સ રેન્કિંગ, શબ્દ સ્ટેમિંગ કે ઘણા રેકોર્ડ જોઈએ — ત્યારે તમારા ડેટાબેઝના ફુલ-ટેક્સ્ટ સર્ચ પર જાઓ, અને હોસ્ટેડ સર્ચ એન્જિન ત્યારે જ વાપરો જ્યારે તમને મજબૂત ટાઇપો સહનશીલતા કે ખૂબ મોટા ડેટા પર તરત પરિણામો જોઈએ. તમે જે પસંદ કરો, સર્ચ હંમેશાં પરવાનગીઓનું પાલન કરે: વપરાશકર્તાઓને જે રેકોર્ડ જોવાની મંજૂરી નથી તે ક્યારેય મળવા ન જોઈએ.
તમારી એપ માટે "સર્ચ" નો અર્થ શું છે
સર્ચ ઘણી જુદી વસ્તુઓ આવરી લે છે, અને મોટાભાગની એપને એકથી વધુની જરૂર પડે છે:
- કીવર્ડ સર્ચ: એક ટેક્સ્ટ બૉક્સ — "'garden' ઉલ્લેખ ધરાવતી લિસ્ટિંગ શોધો".
- ફિલ્ટર: માળખાગત પસંદગીઓ — કેટેગરી, શહેર, કિંમત શ્રેણી, તારીખ, સ્ટેટસ.
- સોર્ટિંગ: સૌથી નવા, સૌથી સસ્તા, સૌથી સુસંગત.
- ઑટોકમ્પ્લીટ: ટાઇપ કરતી વખતે સૂચનો.
- ટાઇપો સહનશીલતા: "restuarant" હજી પણ "restaurant" શોધે છે.
ડિરેક્ટરી, જોબ બોર્ડ કે સ્ટોર માટે, ફિલ્ટર ઘણીવાર ટેક્સ્ટ બૉક્સ કરતાં વધુ મહત્ત્વના હોય છે. ટૂલ પસંદ કરતાં પહેલાં નક્કી કરો કે તમને આમાંથી ખરેખર કઈ જોઈએ છે.
તમારા વિકલ્પો
| અભિગમ | કેવી રીતે કામ કરે છે | શ્રેષ્ઠ ઉપયોગ | મર્યાદાઓ |
|---|---|---|---|
| બ્રાઉઝરમાં ફિલ્ટર | યાદી લોડ કરો, JavaScript માં ફિલ્ટર કરો | નાની જાહેર યાદીઓ (થોડાસો આઇટમ) | બધો ડેટા દરેક મુલાકાતીને મોકલાય; મોટી યાદીમાં ધીમું |
| ડેટાબેઝ પેટર્ન મેચ | સર્વર ક્વેરી, "નામમાં ટેક્સ્ટ છે", કેસ-ઇન્સેન્સિટિવ | નાની-મધ્યમ એપ, એડમિન ટૂલ | કોઈ રેન્કિંગ નહીં; મોટા ટેબલ પર ધીમું થઈ શકે; સ્ટેમિંગ નહીં |
| ડેટાબેઝ ફુલ-ટેક્સ્ટ સર્ચ | Postgres શબ્દોને ઇન્ડેક્સ કરે છે અને મેચને રેન્ક કરે છે | મોટાભાગની કન્ટેન્ટ-ભારે એપ | ફઝી મેચિંગ ઉમેર્યા વગર ટાઇપોમાં નબળું |
| ફઝી મેચિંગ (trigrams) | Postgres સમાનતા માટે અક્ષર ક્રમની તુલના કરે છે | નામો, ટૂંકા ફીલ્ડ, ટાઇપો સહનશીલતા | એક્સટેન્શન અને ઇન્ડેક્સ જોઈએ; ટ્યુનિંગમાં સમય જાય |
| હોસ્ટેડ સર્ચ એન્જિન | અલગ સેવા તમારો ડેટા ઇન્ડેક્સ કરે છે (Algolia, Meilisearch, Typesense, Elasticsearch અને બીજા) | મોટા કેટલોગ, તરત સર્ચ, ભારે ટાઇપો સહનશીલતા | બીજી સેવા સમન્વયમાં રાખવી, ચૂકવવી અને સુરક્ષિત કરવી |
જો તમારો ડેટા પહેલેથી Postgres માં હોય, તો તેનું બિલ્ટ-ઇન ફુલ-ટેક્સ્ટ સર્ચ એક મજબૂત મધ્યમ માર્ગ છે. તે લખાણને શબ્દોમાં તોડે છે, તેમને સ્ટેમ (મૂળ) સુધી ઘટાડે છે (જેથી "running" "run" સાથે મેચ થાય), સામાન્ય શબ્દોને અવગણે છે, અને મેચ કેટલો સારો છે તે પ્રમાણે પરિણામોને રેન્ક કરી શકે છે. યોગ્ય ઇન્ડેક્સ સાથે તે મોટા ટેબલ પર પણ ઝડપી રહે છે.
ઉદાહરણ પ્રોમ્પ્ટ
સરળ શરૂઆત:
લિસ્ટિંગ પેજમાં સર્ચ બૉક્સ અને ફિલ્ટર ઉમેરો. સર્ચે ક્વેરી શીર્ષક અને વર્ણન સાથે કેસ-ઇન્સેન્સિટિવ રીતે મેચ કરવી જોઈએ. ફિલ્ટર: કેટેગરી (ડ્રોપડાઉન), શહેર (ડ્રોપડાઉન) અને મહત્તમ કિંમત. સર્ચ પેજિનેટેડ API રૂટ વડે સર્વર પર કરો, પ્રતિ પેજ 20 પરિણામો. સર્ચ અને ફિલ્ટર URL માં રાખો જેથી પરિણામો શેર થઈ શકે અને બેક બટન કામ કરે. કંઈ મેચ ન થાય ત્યારે મૈત્રીપૂર્ણ ખાલી સ્થિતિ બતાવો.
ફુલ-ટેક્સ્ટ સર્ચમાં અપગ્રેડ:
લિસ્ટિંગ સર્ચને શીર્ષક (વધુ વજન સાથે) અને વર્ણન પર Postgres ફુલ-ટેક્સ્ટ સર્ચમાં ફેરવો. યોગ્ય ઇન્ડેક્સ ઉમેરો, પરિણામોને રેલેવન્સ પ્રમાણે રેન્ક કરો, અને હાલના ફિલ્ટર તથા પેજિનેશન જાળવો. કોઈ હાલનો ડેટા બદલશો નહીં.
નામો માટે ટાઇપો સહનશીલતા ઉમેરવી:
બિઝનેસ નામ પર ફઝી મેચિંગ ઉમેરો, જેથી નાની ભૂલો છતાં પરિણામો મળે. જો ઉપલબ્ધ હોય તો ઇન્ડેક્સ સાથે trigram સમાનતા વાપરો, અને ન હોય તો હાલના સર્ચ પર પાછા જાઓ.
પગલે પગલે
- લોકો શું શોધે છે તેની યાદી બનાવો. કયા ફીલ્ડ (શીર્ષક, વર્ણન, ટૅગ, નામ)? કયા ફિલ્ટર? શક્ય હોય તો કેટલાક વાસ્તવિક વપરાશકર્તાઓને પૂછો.
- સર્વર-સાઇડથી શરૂ કરો. ક્વેરી અને ફિલ્ટર લેતો અને પરિણામોનું એક પેજ પાછું આપતો API રૂટ ઉમેરો. બધું બ્રાઉઝરમાં લોડ ન કરો.
- ક્વેરીમાં પરવાનગીઓ લાગુ કરો. જો વપરાશકર્તાઓ ફક્ત પોતાના રેકોર્ડ, કે ફક્ત પ્રકાશિત રેકોર્ડ જ જુએ, તો તે શરત સર્ચ જેવી જ ક્વેરીમાં હોવી જોઈએ.
- પહેલા દિવસથી પેજિનેશન ઉમેરો — પેજ નંબર કે "વધુ લોડ કરો".
- સર્ચની સ્થિતિ URL માં રાખો (દા.ત.
?q=garden&city=leeds). શેર કરી શકાય તેવી લિંક, કામ કરતું બેક બટન, અને જો તમે ઇચ્છો તો સર્ચ એન્જિન ફિલ્ટર થયેલા પેજ ક્રોલ કરી શકે. - ટાઇપ કરતી વખતે સર્ચને ડિબાઉન્સ કરો. ક્વેરી કરતા પહેલાં ટાઇપ બંધ થયા પછી થોડી સો મિલિસેકન્ડ રાહ જુઓ, જેથી દરેક કીસ્ટ્રોક પર વિનંતી ન જાય.
- ઇન્ડેક્સ ઉમેરો જ્યારે તમને ખબર હોય કે તમે કયા કૉલમ પર ફિલ્ટર અને સર્ચ કરો છો.
- અપગ્રેડ કરો ફુલ-ટેક્સ્ટ સર્ચ પર, પછી ફઝી મેચિંગ, પછી હોસ્ટેડ એન્જિન — ફક્ત ત્યારે જ જ્યારે સરળ પગલું વાસ્તવિક વપરાશકર્તાઓ માટે નિષ્ફળ જાય.
- વાસ્તવિક લાગતા ડેટા સાથે ટેસ્ટ કરો: સેંકડો કે હજારો રો, વિચિત્ર અક્ષરો, ખાલી ક્વેરી, ખૂબ લાંબી ક્વેરી, અને જો સપોર્ટ કરતા હો તો બીજી ભાષાઓ.
સામાન્ય ભૂલો
- આખું ટેબલ બ્રાઉઝરમાં લોડ કરવું. 50 આઇટમ માટે બરાબર છે, 50,000 માટે પીડાદાયક, અને તે દરેક રેકોર્ડ ખુલ્લો પાડે છે — જે વપરાશકર્તાએ ન જોવા જોઈએ તે પણ.
- પરવાનગીઓને અવગણતું સર્ચ. સર્ચ એ સામાન્ય લીક છે: ખાનગી કે ડ્રાફ્ટ રેકોર્ડ દેખાય છે કારણ કે સર્ચ ક્વેરીમાં "ફક્ત મારા" કે "ફક્ત પ્રકાશિત" શરત ભૂલાઈ ગઈ.
- વપરાશકર્તાના કાચા ઇનપુટમાંથી SQL બનાવવું. હંમેશાં પેરામીટરાઇઝ્ડ ક્વેરી વાપરો. AI બિલ્ડર સામાન્ય રીતે આમ કરે છે, પણ જો તમને સ્ટ્રિંગ ચોંટાડાતી દેખાય તો તપાસો.
- ખાલી સ્થિતિ નહીં. સૂચન સાથેનું "કોઈ પરિણામ નથી" (ફિલ્ટર સાફ કરો, જોડણી તપાસો) લોકોને જતા રહેતા અટકાવે છે.
- ઇન્ડેક્સ નહીં. ટેસ્ટ ડેટા સાથે સર્ચ બરાબર લાગે છે અને વાસ્તવિક ડેટા વધે તેમ ધીમું પડે છે.
- સીધા સર્ચ સેવા પર કૂદી જવું. પછી તમારે ડેટાની બીજી નકલ સમન્વયમાં રાખવી, ડિલીટ સંભાળવા, અને ચાવીઓનો બીજો સેટ સુરક્ષિત કરવો પડે — ઘણીવાર કોઈ દેખાતા ફાયદા વગર.
- મોબાઇલ ભૂલવું. ફિલ્ટર ફોનમાં બંધબેસવા જોઈએ; સાઇડબારને બદલે ફિલ્ટર ડ્રોઅર કે સંકોચી શકાય તેવી પેનલ સામાન્ય રીતે વધુ સારી કામ કરે છે.
ચેકલિસ્ટ
- તમે જાણો છો કે કયા ફીલ્ડ શોધાય છે અને કયા ફિલ્ટર છે
- સર્ચ સર્વર પર ચાલે છે અને પેજિનેટેડ પરિણામો આપે છે
- ક્વેરી બાકીની એપ જેવી જ પરવાનગીઓ લાગુ કરે છે
- વપરાશકર્તા ઇનપુટ પેરામીટર તરીકે પસાર થાય છે, ક્યારેય SQL માં ચોંટાડાતું નથી
- સર્ચની સ્થિતિ URL માં રહે છે
- ટાઇપિંગ ડિબાઉન્સ થયેલું છે
- શોધાતા અને ફિલ્ટર થતા કૉલમ ઇન્ડેક્સ થયેલા છે
- ખાલી, કોઈ-પરિણામ અને ભૂલ સ્થિતિઓ સ્પષ્ટ છે
- વાસ્તવિક ડેટા જથ્થા અને ગડબડવાળા ઇનપુટ સાથે ટેસ્ટ થયેલું
Mythex સાથે સર્ચ ઉમેરવું
Mythex પર બનેલી એપમાં, ડેટા સામાન્ય રીતે પ્રોજેક્ટના પોતાના Postgres ડેટાબેઝ માં રહે છે, તેથી તમે ઉપરના પ્રોમ્પ્ટથી શરૂ કરી શકો: પહેલા પેટર્ન મેચિંગ, પછી રેન્કિંગની જરૂર પડે ત્યારે Postgres ફુલ-ટેક્સ્ટ સર્ચ. જો તમને હોસ્ટેડ સર્ચ એન્જિન જોઈએ, તો તમારું પોતાનું ખાતું અને કી લાવો, તેને પ્રોજેક્ટ સિક્રેટ તરીકે સંગ્રહો, અને એજન્ટને સર્વર પરથી તેને ઇન્ડેક્સ અને ક્વેરી કરવા કહો, જેમ કોઈપણ API ઇન્ટિગ્રેટ કરો માં વર્ણવ્યું છે.
ઘણી એપનું હૃદય સર્ચ છે: બાકીની પ્રોડક્ટમાં તે કેવી રીતે બંધબેસે તે માટે ડિરેક્ટરી વેબસાઇટ કેવી રીતે બનાવશો, જોબ બોર્ડ કેવી રીતે બનાવશો અને માર્કેટપ્લેસ કેવી રીતે બનાવશો જુઓ.
પ્રશ્નો
એપમાં સર્ચ ઉમેરવાની સૌથી સરળ રીત કઈ છે?
જો તમારો ડેટા ડેટાબેઝમાં હોય, તો સર્વર રૂટ જે થોડા કૉલમ પર કેસ-ઇન્સેન્સિટિવ મેચ સાથે રો ફિલ્ટર કરે તે સૌથી સરળ શરૂઆત છે. બ્રાઉઝરમાં પહેલેથી લોડ થયેલી નાની યાદી માટે, બ્રાઉઝરમાં ફિલ્ટર કરવું તેનાથી પણ સરળ છે.
શું સર્ચ માટે Algolia કે Elasticsearch જોઈએ?
સામાન્ય રીતે શરૂઆતમાં નહીં. Postgres ફુલ-ટેક્સ્ટ સર્ચ શબ્દ મેચિંગ, રેન્કિંગ અને હજારોથી લાખો રો સારી રીતે સંભાળે છે. હોસ્ટેડ સર્ચ એન્જિન ત્યારે યોગ્ય છે જ્યારે તમને મજબૂત ટાઇપો સહનશીલતા, મોટા ડેટા પર ટાઇપ કરતાં જ તરત પરિણામો, અથવા અદ્યતન રેલેવન્સ ટ્યુનિંગ જોઈએ.
મારો સર્ચ ટાઇપો (ખોટી જોડણી) સાથે પરિણામ કેમ નથી શોધતો?
મૂળભૂત મેચિંગ અને માનક ફુલ-ટેક્સ્ટ સર્ચ શબ્દો જેવા લખાયા છે તેવા (અથવા તેમના સ્ટેમ) શોધે છે, તેથી ખોટી જોડણી ચૂકી જાય છે. તમારે ફઝી મેચિંગની જરૂર છે, જેમ કે Postgres માં trigram સમાનતા અથવા ટાઇપો સહનશીલતાવાળું સર્ચ એન્જિન.
સર્ચ બ્રાઉઝરમાં ચાલવું જોઈએ કે સર્વર પર?
નાની જાહેર યાદી સિવાય કંઈપણ માટે સર્વર પર. સર્વર-સાઇડ સર્ચ સ્કેલ થાય છે, પરવાનગીઓનું પાલન કરે છે, અને દરેક મુલાકાતીને તમારો આખો ડેટાસેટ મોકલતું નથી.