Egy weboldal keresőjét bonyolult feladat jól működőre megcsinálni?
Általában csak rész egyezést figyel, simán: LIKE "%{$keyw}%"
Amúgy azt kapod amire rákerestél, max miben keres nem pontos...
A google meg hasonlók esetén, meg már teljesen másképp megy.
Ott egy csomó dolgot bele helyeznek, egyéni és globális szokások alapján.
És a végeredményt úgy rakják sorba ami a felhasználónak szokásai alapján leginkább releváns.
"Tehát nem egy több hónapos fejlesztést igénylő feladat?"
Ezt így nem lehet 100% -ban kijelenteni!!!
Ha van egy egyszerű szerkezetű weboldal, ami adatbázisban trolja az adatokat, és 1 mezőben kell keresni, akkor nem...
De ha mondjuk egy 1000 oldalas statikus weboldal, amit dinamikussá kell konvertálni, esetleg még speciális paraméterek alapján is kell keresni, na'h ott igen, akár hónapok is lehet...
Nem tudom pontosan, mire gondolsz.
A legegyszerűbb kereső pontos egyezéseket keres.
Tehát, ha te beírod neki, hogy "almalé", akkor az "alma" szót nem találja meg, de olykor az "almalevet" sem. "almalé", "almalével", "almalé ízű" ezeket meg fogja találni.
De ha vannak kulcsszavak, akkor azokban is tud keresni.
A bonyolultabb keresők meg tudják állapítani az összetett szavak első tagját, és a szótöveket. Egy ilyen már megtalálja az "almalevet" vagy az "almalével" szót is, mert tudja, hogy az "alma" a szótő. Egy ilyen leprogramozása már nem triviális feladat.
Az ennél is komplexebb keresők MI alapon működnek. Ki tudja találni neked, hogy ha az "cukros almalé" szókapcsolatra keresel, akkor téged érdekelnek a cukros nedűk, meg a gyümölcslevek, elsősorban az alma. Ez alapján keres neked cukros almalevet, de akár almareszelőt gépet is, vagy kifejezetten gyümölcslé készítéségez való cukrot, de még a gyümölcsök egészségtudatos megközelítéséről is tud tájékoztatni. Az ilyen kereső ritka, Google, Cortana, Siri, stb.
Én ezért csinálom úgy a keresőt, hogy egyszerű, gyors legyen, és valamennyire pontos...
3. dologba keresek, Elsőnek a Címében, aztán a kulcsszavak közt, majd a leírásban.
Elsőnek az kerül ami egyezik, tehát pontos kifejezés.
Utána az jön, ami részben egyezik, pl. almára keres, de almalé van a címben.
Aztán ha sehol semmi, akkor leírásban, pl. ha egy almás mintájú szalvéta, aminek nincs a címben hogy alma, de a leírásba szerepel, akkor megtalálhatja a szalvétát is.
A rendszertől és a feltételektől függ, hogy mennyire bonyolult.
Pont ez, amit a kérdező is mondott egy olyan eset, ahol már "komolyabb" megoldás kell, mert a csak tartalmazza az adott szót kevés, bár itt is egy függ már az adatbázistól.
Aztán innen lehet tovább menni a hatékonyabb keresők felé, nálunk van Solr és ElasticSearch is, mert ezek nélkül több percet kéne várni már.
Nem is maga a keresés, hanem a találatok sorrendje az, ami nem triviális.
De vegyünk néhány szempontot:
1. Teljes szóra keressen, vagy szórészletre is? A teljes szó lehet, hogy kihagy releváns találatokat. Pl. ha valaki rákeres a „fúró” szóra, akkor azért szeretnénk, ha a „fúrógép” is benne lenne a találatban. Viszont behoz irreleváns találatokat. Lásd: „alma” vs. „tartalmaz”. Itt lehet súlyozni, hogy a teljes szóegyezőség előbbre sorolódik, a szó eleji egyezés is kicsit előbbre kerül, a szó közepére illeszkedő találat meg hátrább kerül.
2. Ékezeteket mennyire kezelje rugalmasan? Ha szigorúan veszi, akkor a „óra” szóra nem lesz találat a „órák” szó, pedig releváns lehet. Ha viszont figyelmen kívül hagyja az ékezeteket, akkor a „tévé” keresőszóra megtalálja a „teve” szót is, ami meg nem releváns. Itt is lehet súlyozni, hogy az ékezetes egyezőség előbbre sorolódik.
3. Több szó esetén is kérdés, hogy az egy komplex kifejezés, amit egyben, ilyen sorrendben keresünk, vagy a sorrend nem számít. A „paprikás csirke” keresőszóra előjöhetne a csirkepaprikás is. Vagy a „kockás ing”-re, az „ing, kockás” is. Na itt megint lehet cizellálni, hogy a teljes kifejezés egyezőség előbbre sorolódik, ha nem teljes az egyezőség, akkor a szomszédos szavak, vagy a szavak távolsága kicsit előrébb van, ha a megtalált két szó között van 1000 karakter, akkor meg a végére teszi. Itt már az is bejön, hogy kombinálódik az egész az első két szemponttal. No de milyen arányokkal? A „nap kép”-re melyik találat jöjjön előre? A „naplemente háttérkép”, ahol a két szó egymás mellett van, de nem teljes a szóegyezés? Vagy a „Ez az ezer kép olyan lassan töltődött fel, hogy három nap volt, mire felkerült”? Nem triviális, pro és kontra is lehet példát találni, hogy az egyik jobb, mint a másik.
4. Ha több mező van, akkor még cizelláltabb a helyzet. Addig oké, hogy mondjuk a címben megtalált szó nagyobb prioritású, mint az alcímben megtalált, a leírásban megtalált szó meg kevésbé releváns találat. Na de mi van, ha két szóra keresek rá, az egyik a címben van, a másik az alcímben, de mindkettőnél részleges és nem ékezethelyes a találat. Az most jobb, mintha teljes ékezethelyes kifejezésegyezés van de a leírásban?
Itt kérdés, hogy mennyire akarod cizellálni a dolgot, mennyire fontos, a találatok relevanciája, sorrendje. Nyilván a végtelenségig lehet ezt optimalizálni, csak akkor hónapokig dolgozol a keresésen. Meg lehet kompromisszumokat hozni, és akkor kicsit egyszerűbb. Meg lehet egy buta keresőt is csinálni, mert a célnak az adott oldalon megfelel.
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!