Keresett tartalmak relevancia szerinti sorba rendezése
Szinte minden weboldalon találhatunk keresőt. Alaphelyzetben simán elég szokott lenni, ha keresünk valamire, akkor a kereső megmutatja azokat cikkeket, amelyekben az adott kifejezés megtalálható. Amint elkezdenek gyűlni a cikkek jön az igény, hogy valahogyan sorba kellene rendezni őket. Én a legjobban azt szeretem, ha relevancia szerint rendezünk, mert a felhasználó így nagyobb valószínűséggel találja meg, amit keres.
MySql Full-Text
A MySql beépített Full-Text keresője önmagában is ad lehetőséget arra, hogy megtudjuk, hogy egy cikk egy kifejezésre mennyire releváns. Erre rendezhetünk is:
select
match cim,lead,content against ('KIFEJEZES') relevancia
,
cikk.*
from cikk
where
match cim,lead,content against ('KIFEJEZES')
order by relevancia desc
Tök jó. Viszont nem áll módunkban súlyozni, hogy mely mezők mennyire fontosak. Pédául fontosabb lehet, hogy a keresett kifejezés a címben szerepel, mint az, hogy a tartalomban többször.
Full-Text keresés + saját relevancia számolás
Azt használjuk ki, hogy minden logikai kifejezés értéke 0 vagy 1. pl:
select
((cim like 'KIFEJEZES%' ) + 1) * 10
+
((cim like '% KIFEJEZES %' ) + 1) * 5
+
((cim like '%KIFEJEZES%' ) + 1) * 2
+
((lead like '%KIFEJEZES%' ) + 1) * 2
+
((content like '%KIFEJEZES%' ) + 1) * 1
relevancia,
cikk.*
from cikk
where
match cim,lead,content against ('KIFEJEZES')
order by relevancia desc
A relevancia kiszámolás természetesen csak minta ez szinte minden esetben egyedi, attól függ kinek mi a fontos. Ami még jó benne, hogy bármyilyen kifejezést írhatunk ide és
hozzárendelhetünk értéket. Lehet mondjuk a cikk frisseségét, olvasottságát, kommentek számát figyelembe venni, de akár belevehetjük a napszak viszgálatát is :)
A sebessége ennek a módszernek nem lényegesebben lassabb, mintha a FULLTEXT által adott relevancia szerint rendeznénk. Maga a keresés ugyanannyi idő, a rendezés is filesort, a saját kis számításunka pedig már csak a szűrt adatokon kell alkalmazni.
A módszer élesben
Vitaminsziget.com keresője:
Keresés az "ekcéma" kifejezésre »
Keresés a "c vitamin" kifejezésre »
Praktikak.hu keresője:
Keresés a "mozaik" kifejezésre »
Keresés a "szalvéta technika" kifejezésre »

Ez nagyon zsír, legközelebb tesztelem, ha keresőt írok.
VálaszTörlésEzt a megjegyzést eltávolította a szerző.
VálaszTörlésEz tényleg szuper, gratula! Én a saját weblapomban (weblap.ro) még tovább mentem és minden kereshető oldalnak adtam egy belső pagerankot, valamint a kulcsszavak mindenikére külön egy rankot. Ezt a feltöltésnél kell megadni, kicsit időigényes, de az eredmény bombabíztos. Amúgy, ezt a FULLTEXT-et nem ismertem.
VálaszTörlés