Google szerű keresés MySQL sorban
Üdv!
Hogy tudok úgy keresni egy mysql sorban mint a google (hasonlóan)?
Mit is értek ez alatt:
pl van egy sor:
rossz indulatú hatások
bneírom kersőbe:
rossz
akkor ugye ezt kiadja
de ha azt irom hogy:
hatások rossz
akkor viszont már nem
ugye ezt a a like-al lehet megvalósítani és a %jelekkel
de hogy tudnék olyan hatást elérni hogy van egy leíró tartalmam mondjuk vagy 1000 és ebben úgy keresni mint a google a weboldalak között, ilyesmi szerűen?
Előre is kösszönöm.
■ Hogy tudok úgy keresni egy mysql sorban mint a google (hasonlóan)?
Mit is értek ez alatt:
pl van egy sor:
rossz indulatú hatások
bneírom kersőbe:
rossz
akkor ugye ezt kiadja
de ha azt irom hogy:
hatások rossz
akkor viszont már nem
ugye ezt a a like-al lehet megvalósítani és a %jelekkel
de hogy tudnék olyan hatást elérni hogy van egy leíró tartalmam mondjuk vagy 1000 és ebben úgy keresni mint a google a weboldalak között, ilyesmi szerűen?
Előre is kösszönöm.
FULLTEXT index
http://dev.mysql.com/doc/refman/5.0/en/fulltext-search.html
A hasonlóságot visszakaphatod szám formájában, így lehetőséged van rendezni is a találatokat. A hasonlóságon kívül más szempontok is szerepet kéne játszanak. Pl minden rekordhoz tartozik egy fontossági százalék, hogy marketing szempontjából mennyire fontos az illető dokumentum. Előnyben részesítheted az újabb írásokat, és/vagy az olvasottabbakat.
Ezek mind számszerüsíthatő adatok, az összegés módszere viszont az adott helyzettől függ, ki kell tapasztalnod. Én anyit tudok ajánlani, hogy kerekítsd egész számmá (ROUND) a fulltext keresés eredményét. Majd olyan 2, max 3 pontot osszál fel a fenti tényezők között (itt már nem kell kerekíteni), és add hozzá a fulltext által kapott eredményhez.
Ja.. és ha tényleg helyi guglit szeretnél csinálni pontozhatod, hogy az egyes oldalkra hány (belső) link mutat. Ezt úgy számolhatod, hogy a referer-t figyeled miközben böngészik az oldaladat, így összeszámolhatod (persze csak azokat a linkeket, amire legalább egy olvasó rákattintott), hogy hány kümönböző más dokumentum linkel erre. Persze, ha bonyolultabb URL-eket hazsnálsz kell majd egy kis kalkuláció is, hogy a nem fontos elemet elvesd pl a:
/termek.php?id=12&menu=1
és a
/termek.php?id=12&menu=0
célszerű ha egynek számít, mivel dokumentumkat számolsz, nem URL-eket.
Millió dolgot vizsgálhatsz még, pl, hogy egy kulcsszóra kidobott dokumentumok között melyikre kattintott rá a user. Pl. akváriumra keresnek, és 90%ban a harmadik találatra kattint rá mindenki, akkor azt a dokumentumot valahogy célszerű lenne az "akvárium" kulcsszóhoz jobban hozzákapcsolni. Stb stb stb.
B
Kösszike a linket.
CREATE TABLE `scr` (
`id` int(10) unsigned NOT NULL auto_increment,
`title` varchar(200) default NULL,
`body` text,
PRIMARY KEY (`id`),
FULLTEXT KEY `title` (`title`,`body`)
);
két sor:
1.sor: title: minden ami fénylik body: minden arany ami fénylik
2.sor: title: mindeki szereti az aranyat body: az arany mindent megad
SELECT id FROM scr WHERE match (title,body) AGAINST ('minden')
és erre a kérésre 0 sor-t ad vissza, de lehet valammit rosszul csináltam, vagy nem?
ezért nem megy:
Tehát ha az adatok 50% ánál nagyobb arányban megtalálható az adott szó, akkor arra nem lehet keresni, mert valószínűleg nem lesz releváns a találat. Pl.: ha minden mondatodban benne van, hogy tehát akkor nincs értelme arra keresni. Ez mondjuk a 2 soros példádban sajnos így jött ki, de egyébként mennie kell, ha beszúrsz még vagy 3 sort.
kössz