Pagina 2 di 3 primaprima 1 2 3 ultimoultimo
Visualizzazione dei risultati da 11 a 20 su 22

Discussione: [Mysql] struttura db

  1. #11
    Originariamente inviato da moskitoita
    volevo usare la fulltext per la possibilità che da di associare un punteggio ai risultati
    non capisco cosa vuoi dire con punteggio.

    Forse lo score a cui ti riferisci e' l'ordine di rilevanza del record trovato non certo la frequenza. Comunque:

    Codice PHP:
    SELECT FROM `articoli`
    INNER JOIN `paeseON paese.id articoli.id_paese
    WHERE MATCH
    (articoli.contenutoAGAINST('Bulgaria')
    OR 
    paese.name 'Bulgaria' 
    e' la stessa cosa o quasi di:

    Codice PHP:
    SELECT FROM `articoli`
    INNER JOIN `paeseON paese.id articoli.id_paese
    WHERE articoli
    .contenuto  LIKE '%Bulgaria%'
    OR paese.name 'Bulgaria' 
    Ma questa seconda non ha le limitazioni e condizioni di match - against. mettici anche un order by per avere un certo ordine nei risultati

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  2. #12
    Utente di HTML.it L'avatar di moskitoita
    Registrato dal
    Feb 2004
    Messaggi
    1,255
    Si, mi riferivo allo score
    Ora sto usando questa query non leggera ma dai discreti risultati
    Codice PHP:
    SELECT *, MATCH(provvedimenti.contenutoAGAINST('Bulgaria+codice') + MATCH(paesi.nameAGAINST('Bulgaria+codice') as score
    FROM 
    `provvedimenti`
    INNER JOIN `paesiON paesi.id provvedimenti.paese_id

    WHERE MATCH
    (provvedimenti.contenutoAGAINST('Bulgaria+codice') or MATCH(paesi.nameAGAINST('Bulgaria+codice'
    (ho lasciato i nomi di tabella effettivi)
    "Aiuterò le forze dell'ordine a sventrare eventuali truffatori, eventuali assassini che abbiano utilizzato l'informatica per fini malvagi"

    Salvatore Aranzulla, 15 Aprile 2007, cognome&nome, La7

  3. #13
    Utente di HTML.it L'avatar di moskitoita
    Registrato dal
    Feb 2004
    Messaggi
    1,255
    Un ultima cosa, mi sai dare qualche consiglio su come recuperare il contesto dove è stata trovata la parola limitato a tot caratteri (come avviene sui motori di ricerca)? Tu lo faresti fare a mysql o al php? Con php sono in grado di farlo ma estrarrei l'intero campo con un notevole spreco di risorse
    "Aiuterò le forze dell'ordine a sventrare eventuali truffatori, eventuali assassini che abbiano utilizzato l'informatica per fini malvagi"

    Salvatore Aranzulla, 15 Aprile 2007, cognome&nome, La7

  4. #14
    Originariamente inviato da moskitoita
    Un ultima cosa, mi sai dare qualche consiglio su come recuperare il contesto dove è stata trovata la parola limitato a tot caratteri (come avviene sui motori di ricerca)? Tu lo faresti fare a mysql o al php? Con php sono in grado di farlo ma estrarrei l'intero campo con un notevole spreco di risorse
    i parametri del full-text li trovi nelle variabili di mysql.

    codice:
    ft boolean syntax  	+ -><()~*:""&|
    ft max word len 	84
    ft min word len 	4
    ft query expansion limit 	20
    ft stopword file 	(built-in)
    Non mi occupo di full-text perche' e' esclusivo delle tabelle MyIsam mentre in genere uso le InnoDB. Non avrei la portabilita' degli script.

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  5. #15
    Utente di HTML.it L'avatar di moskitoita
    Registrato dal
    Feb 2004
    Messaggi
    1,255
    Originariamente inviato da piero.mac
    Mi devo essere spiegato male
    Vorrei mostrare la porzione di testo dove è stata trovata la parola, come avviene su google.
    "Aiuterò le forze dell'ordine a sventrare eventuali truffatori, eventuali assassini che abbiano utilizzato l'informatica per fini malvagi"

    Salvatore Aranzulla, 15 Aprile 2007, cognome&nome, La7

  6. #16
    Originariamente inviato da moskitoita
    Mi devo essere spiegato male
    Vorrei mostrare la porzione di testo dove è stata trovata la parola, come avviene su google.
    prova con LOCATE() e SUBSTRING() nella select.

    passi la stringa da cercare a Locate e ne ricevi l'offset che userai con il substring()

    oppure con REGEXP ... o altro ancora ... la pagina del manuale e' la seguente:

    http://dev.mysql.com/doc/refman/5.0/...functions.html

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  7. #17
    Originariamente inviato da piero.mac
    i parametri del full-text li trovi nelle variabili di mysql.

    codice:
    ft boolean syntax  	+ -><()~*:""&|
    ft max word len 	84
    ft min word len 	4
    ft query expansion limit 	20
    ft stopword file 	(built-in)
    Non mi occupo di full-text perche' e' esclusivo delle tabelle MyIsam mentre in genere uso le InnoDB. Non avrei la portabilita' degli script.
    Mysql usa di default le innoDB, ma la ricerca fulltext è supportata solo dalle tabelle MyIsam...

    Quale è il vantaggio nellusare la ricerca fulltext, per un piccolo motore di ricerca interno ad un sito, le cui pagine sono archiviate in un database?
    Quale altro modo c'è di poter fare una ricerca "evoluta" oltre la fulltext e il classico like?

    Grazie!
    Ciao!

  8. #18
    Originariamente inviato da fmortara
    Mysql usa di default le innoDB
    Ehm.... sei proprio sicuro???

    <ALCIO />
    Per cortesia: no PVT Tecnici
    ******* LINKS *******
    SRL
    MetalWave

  9. #19
    Originariamente inviato da alcio74
    Ehm.... sei proprio sicuro???

    dipende dall'impostazione nel my.ini

    # The default storage engine that will be used when create new tables when
    default-storage-engine = innodb # oppure myisam

    Questo significa solo che se non specifichi il tipo di engine per default verranno create tabelle InnoDB oppure myisam.

    Nelle ultime versioni di mysql le InnoDB sono "predefinite" nella configurazione del my.ini nella sezione:

    #*** INNODB Specific options ***

    ma questo e' solo fumo per l'arrosto. Il fatto che siano "predefinite" nella configurazione significa nulla ai fini dell'utilizzo dei vari motori.



    Se sono abilitate si possono usare, altrimenti no. Abilitare e' diverso dall'impostare per default.

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  10. #20
    Originariamente inviato da alcio74
    Ehm.... sei proprio sicuro???

    Come dice anche piero.mac, le InnoDB sono settate di default, e nella maggioranza degli hosting è cosi.

    In ogni caso, dato che le InnoDB sono "migliori" (notare le virgolette..!), esiste un modo per emulare la ricerca fulltext che non è disponibile?

    Grazie
    Ciao!

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.