Jeg har fået lavet en søge maskine, men jeg kunne godt tænke mig at få den til at vise, hvor relevant de fundende resultater er til det søgeord, som brugeren indtastede.
Et godt eksempel er Eksperten selv, når du søger på en tråd, viser den en grå bar med hvor relevant resultaterne er til det indtastede søgeord.
Nogen som har en idé, eksempler eller et færdigt script, som de vil dele med mig? :)
Der er 60 point, lige ned i lommen, til den erfarne og vellykkede koder :D
Du laver et fulltext-index på de felter der skal søges i. F.eks. [title] og [description].
I dit SQL query laver du så:
SELECT id, title, description, MATCH(title, description) AGAINST ('søgeord her') AS relevance FROM table WHERE MATCH(title, description) AGAINST ('søgeord her') HAVING relevance > 0 ORDER BY relevance DESC LIMIT 0, 100
Hmm - jeg får denne fejl hele tiden; "Can't find FULLTEXT index matching the column list"
Synes godt om
Slettet bruger
11. februar 2006 - 15:32#8
Det er fordi du skal lave et fulltext index der matcher kolonnelisten, hehe. Det skal dække over de felter du bruger i din MATCH().
Synes godt om
Slettet bruger
11. februar 2006 - 15:34#9
Altså, du skal ikke have et fulltext index til hvert enkelt felt, men kun ét enkelt fulltext index der dækker alle felter (og ikke flere) som du bruger.
I PhpMyAdmin (hvis det er det du bruger) redigerer du dit index ved at klikke på (edit/rediger/blyant-ikon) udfor indexet under tabelstrukturen.
$search_sql = mysql_query('SELECT id, username, MATCH(username) AGAINST (\''.$_SESSION['cssforum']['search'].'\') AS relevance FROM css_users WHERE MATCH(username) AGAINST (\''.$_SESSION['cssforum']['search'].'\') HAVING relevance > 0 ORDER BY relevance DESC') or die(mysql_error());
Synes godt om
Slettet bruger
11. februar 2006 - 15:41#11
Hvorfor laver du 2 x single-quotes omkring din variabel og escaper den yderste?
Hehe fordi jeg starter min query med single-quote også skal men escape :P
Men nu har jeg lavet mit felt (username) til FULLTEXT, men nu viser den hverken username eller relevance i min løkke :/
Synes godt om
Slettet bruger
11. februar 2006 - 15:51#13
Yes, men du skal vel ikke bruge 2 x single-quotes alligevel? :)
Jeg tror jeg har misforstået dit spørgsmål. Du vil søge med wildcard i et felt der kun indeholder ét ord (et brugernavn) og have relevans? Det giver ikke så meget mening for mig? Man kan ikke søge på brudstykker af ord med FULLTEXT indexes. Det er beregnet til søgemaskine-agtig funktionalitet. Og relevansen vil vel altid bare være enten/eller når der kun er ét ord?
Ville bare kunne udskrive (i %) hvor stor relevans den "fundne" post på min nuværende søgestreg er :)
Min søgestreg:
$search_sql = mysql_query('SELECT id, heading AS output FROM css_forum_topics WHERE heading LIKE \'%'.$_SESSION['cssforum']['search'].'%\' ORDER BY id DESC');
Synes godt om
Slettet bruger
11. februar 2006 - 17:52#15
Jeg er ikke med på hvad der ikke virker. Hvad hedder din tabel og dine felter helt præcist? Hvilke indexes har du lavet for hvilke felter?
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.