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 |
#2 · Zasláno: 15. 1. 2011, 15:09:42
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 * |
#3 · Zasláno: 15. 1. 2011, 15:31:02
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 |
#4 · Zasláno: 15. 1. 2011, 17:26:28
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 * |
#5 · Zasláno: 15. 1. 2011, 18:36:04
:-) diky za rady. a tedy dalo by se to nejak vyresit? napriklad omezit fulltext stpowords? :)
|
||
Kajman_ Profil * |
#6 · Zasláno: 15. 1. 2011, 21:30:31
V boolean mode hledání je buď nalezeno nebo ne. Není tam odstupňována relevance.
|
||
Časová prodleva: 13 let
|
0