Autor Zpráva
jakub67
Profil *
Zdravím, vyhledávám v databázi v tabulce písničky, kde jsou sloupce, artista a song. Chci dosáhnout co nejlepších výsledků při vyhledávání. Měl bych použít fulltextové vyhledávání? Můj kód vypadá zatím takto:


$string = $_GET[search];
$sql = mysql_query("SELECT *, MATCH(artist, song) AGAINST('$string*' IN BOOLEAN MODE) AS relevance 
                    FROM playlist
                    WHERE MATCH(artist, song) AGAINST('$string*' IN BOOLEAN MODE) 
                    ORDER BY relevance DESC LIMIT 15"); 

Tento script vyhledává bohužel špatné výsledky, když zadám např více slov. (např.: když zadám "how do you do", což je přesný název, tak ho to nedá na první místo). Nevíte někdo jak to vylepšit? Co dělám špatně?
holi
Profil
v Databázích se nevyznám ale z tohoto usuzuji že by jste měl napsat script který vám dá sestupně co nejpřesněji nalezenou položku, protože si myslím že to porovnává postupně záznam v tabulce po záznamu a podobné výsledky odesílá takže na první místo řadí prvně najitý song, pokud kecám tak se omlouvám, ale je to jen tip.
jakub67
Profil *
Myslím si, ze by to měl zajistit ten relevance. Myslim ze je problem, kdyz zadam velmi kratka slova, zkousel jsem nastavit ft_min_word_len=2, ale problem to nevyresilo
TomášK
Profil
Fulltext některá často se vyskytující slova neindexuje, viz http://dev.mysql.com/doc/refman/5.0/en/fulltext-stopwords.html, myslím, že by to mohla být příčina. holi otipoval dobře, že kecá :-)
jakub67
Profil *
:-) diky za rady. a tedy dalo by se to nejak vyresit? napriklad omezit fulltext stpowords? :)
Kajman_
Profil *
V boolean mode hledání je buď nalezeno nebo ne. Není tam odstupňována relevance.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: