ugrás a tartalomhoz

Google szerű keresés MySQL sorban

Vas Dávid · 2006. Nov. 2. (Cs), 02.23
Ü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.
 
1

FULLTEXT index

vbence · 2006. Nov. 2. (Cs), 10.10
Erre találták ki a fulltext indexet:
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
2

Kösszike a linket.

Vas Dávid · 2006. Nov. 3. (P), 03.01
Kössz a linked, te sajnos nem sikerül jutnom semmire.:(


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?
3

ezért nem megy:

Anonymous · 2006. Nov. 3. (P), 05.03
The search result is empty because the word “MySQL” is present in at least 50% of the rows. As such, it is effectively treated as a stopword. For large datasets, this is the most desirable behavior: A natural language query should not return every second row from a 1GB table. For small datasets, it may be less desirable.

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.
4

kössz

Vas Dávid · 2006. Nov. 4. (Szo), 01.41
kössz, igaz ezt olvastam is, de akkor nem volt jó mert 1/1-be próbáltam, hogy különböző akkor 3 sor kellet volna külöböző nem pedig 2, na de mind1 a lényeg hogy elvileg jó és kössz.