Visualizzazione dei risultati da 1 a 7 su 7
  1. #1

    [MySQL] Individuare contenuti affini mediante tags

    Ciao a tutti,
    ho una tabella contenente degli articoli tutti dotati di una serie di tags che ne descrivono l'argomento. Semplifico la situazione in questo modo:

    articoli(id, testo, tags)

    Il campo tags è una stringa contenente parole separate da virgola; ad esempio, per un articolo che parla di Ferrari, potremmo avere: "formula 1, monoposto, corse, gran premi".

    Partendo da questi presupposti, esiste un metodo per estrarre dal DB, mediante una sola query, tutti gli articoli che hanno dei tags in comune con un determinato articolo X?

    Grazie in anticipo!

  2. #2
    A partire da una stringa con i tag dell'articolo X:

    - crei un array con i singoli tag
    - crei una query che esegue un matching tipo:

    CONCAT(", ", tag, ",") LIKE "%, $tag[0],%" AND CONCAT(", ", tag, ",") LIKE "%, $tag[1],%" etc.
    In alternativa, puoi provare una ricerca FULL TEXT.

  3. #3
    Utente di HTML.it L'avatar di oronze
    Registrato dal
    Jun 2001
    Messaggi
    3,543
    non basta un SELECT * FROM articoli WHERE tag LIKE '%".$stringa."%' ?

    No ai layout tabellari!

    Insulto libero: http://forum.html.it/forum/showthread.php?s=&postid=12524872#post12524872

  4. #4
    Originariamente inviato da oronze
    non basta un SELECT * FROM articoli WHERE tag LIKE '%".$stringa."%' ?
    Ovviamente no.

  5. #5
    Utente di HTML.it L'avatar di oronze
    Registrato dal
    Jun 2001
    Messaggi
    3,543
    e scusa...perchè?
    da quello che sò io % cerca per tutti i caratteri, quindi %ca% troverà sia 'arca' che 'cane' che 'cascare' e perchè non dovrebbe trovare 'tag1, casa, tag2'?

    No ai layout tabellari!

    Insulto libero: http://forum.html.it/forum/showthread.php?s=&postid=12524872#post12524872

  6. #6
    In alternativa, puoi provare una ricerca FULL TEXT.
    Ho provato questo:
    codice:
    SELECT *, MATCH (tags, titolo) AGAINST ('defecazione fecalomi staphylococcus aureus dolore addominale sindrome del colon irritabile morbo celiaco gastroenterte accido lattico auoimmunità antimuscarinici.' IN BOOLEAN MODE) AS rilevanza FROM malattie WHERE flag_pubblicato='1' AND MATCH (tags, titolo) AGAINST ('defecazione fecalomi staphylococcus aureus dolore addominale sindrome del colon irritabile morbo celiaco gastroenterte accido lattico auoimmunità antimuscarinici.') HAVING rilevanza >= 2 ORDER BY rilevanza DESC LIMIT 0,5
    Ma non ha dato i frutti sperati.. qualche suggerimento con il FULLTEXT?

  7. #7
    Originariamente inviato da oronze
    e scusa...perchè?
    Per il semplice fatto che il campo tags contiene PIU' tag, non UN SOLO tag.

    La tua soluzione porterebbe a risultati NON attendibili. A differenza di quanto suggerito in precedenza che permette di avere una corrispondenza precisa.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.