Visualizzazione dei risultati da 1 a 10 su 10

Discussione: Differenza tra query

  1. #1

    Differenza tra query

    Che differenza c'e tra questa query :

    SELECT id, name FROM table WHERE MATCH(name) AGAINST ('stefano');


    e questa :


    SELECT id, name FROM table WHERE name like '%stefano';

  2. #2
    abissale.....

    con LIKE trovi delle uguaglianze tra il contenuto del campo e la stringa proposta

    con MATCH.. AGAINST trovi delle similitudini. ci sono poi svariate condizioni in piu' .. lunghezza minima della stringa stabilita nelle variabili, la percentuale di presenze nella tabella.. cioe' se troppo frequente viene scartata... poi ci sono parole ritenute poco significative che vengono scartate contenute in un indice apposito (le stop-words)... ovviamente in inglese inserite in una lista compilata in release. Funziona solo con il motore MyIsam....

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

  3. #3
    Originariamente inviato da piero.mac
    abissale.....

    con LIKE trovi delle uguaglianze tra il contenuto del campo e la stringa proposta

    con MATCH.. AGAINST trovi delle similitudini. ci sono poi svariate condizioni in piu' .. lunghezza minima della stringa stabilita nelle variabili, la percentuale di presenze nella tabella.. cioe' se troppo frequente viene scartata... poi ci sono parole ritenute poco significative che vengono scartate contenute in un indice apposito (le stop-words)... ovviamente in inglese inserite in una lista compilata in release. Funziona solo con il motore MyIsam....
    ecco è quello che mi serve proprio a me

    dunque con la prima lui mi restituisce solo dove ho stefano mentre teoricamente la seconda mi dovrebbe restituire anche una similitudine (stefao oppure stafeno) giusto ?????

    fulltext vero ?

  4. #4
    Originariamente inviato da stefano3804
    ecco è quello che mi serve proprio a me

    dunque con la prima lui mi restituisce solo dove ho stefano mentre teoricamente la seconda mi dovrebbe restituire anche una similitudine (stefao oppure stafeno) giusto ?????

    fulltext vero ?
    Ehhh .. non direi.... se tu metti "stefano steano stafeno" lui ti trova le similitudini... cioe' non devi mettere % ne posizione o ordine nelle parole.... ma le parole non se le puo' inventare.... dovresti fare una tabella di equivalenti pescare in quella e usarla per la comparazione.

    Diciamo che usando match against nel select potresti trovare una percentuale di similitudine rilevante su cui fare l'ordinamento. E' una funzione da studiare bene, sia per lo scopo che per il risultato che vuoi ottenere.

    Per similitudine si intendono parole finite e corrette, per esempio: voglio trovare i libri dove nel sommario/descrizione ci siano le parole ('vitello carne stufato) se le trova tutte e tre mi dara' la rilevanza su questo record poi via via verranno gli altri record. E' un motore di ricerca molto piu' sofistico di LIKE.

    Ma non serve per trovare errori di battitura


    Se ci sei domenica ne possiamo parlare....

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

  5. #5
    Stefano, per gli errori di battitura e le similitudini mi sono fatto uno scriptino che sfrutta la funzione levenshtein.
    Funziona così: memorizza in una tabella tutte le parole cercate.
    Poi quando tu cerchi una parola, se trova risultati ok, altrimenti lancia lo script che confronta la tua parola con quelle cercate precedentemente, e propone le similitudini. In pratica è il famoso "FORSE CERCAVI..." di Google.
    Non ti posto lo script perchè è specifico per il mio DB, se me lo chiedi te lo scrivo ma comunque son poche righe, è molto facile.
    La mia base di dati sono le parole già cercate, ma potresti benissimo usare le parole che hai nel db oppure qualsiasi altro array di parole.

    Per quanto riguarda invece MATCH... AGAINST, fa riferimento a una tabella (MyISAM come giustamente precisato da piero.mac) che ha un indice di tipo FULLTEXT.
    E' una funzionalità ottima da utilizzare per costruire un motore di ricerca perchè ti permette, oltre che di ordinare i record per rilevanza, di costruire facilmente query di ricerca booleane (AND... NOT... "testo esatto", ecc) in quanto supporta questa tecnologia in modo nativo.
    In più, è dannatamente veloce dal momento che sfrutta gli indici.

    La documentazione la trovi qui:
    http://dev.mysql.com/doc/refman/5.0/...xt-search.html

    Mentre un esempio lo puoi vedere nello script di esempio per il motore di ricerca di OpenWebSpider:
    http://www.openwebspider.org/openweb...hp_example.php

    (OWS me l'avevi segnalato tu, ricordi? (A proposito, il robot procede alla grande... sto per finire quella parte, quanto prima posterò i risultati nel topic che ora ho in firma))

  6. #6
    anche per il levenstein mi sembra che gia ne discutessimo insieme qualche tempo indietro .....

    Praticamente io vorrei adottare una cosa sul tipo che mi hai detto per un rewirte

  7. #7
    Originariamente inviato da stefano3804
    anche per il levenstein mi sembra che gia ne discutessimo insieme qualche tempo indietro .....
    Infatti è proprio da quella discussione che è nata la mia idea
    Originariamente inviato da stefano3804
    Praticamente io vorrei adottare una cosa sul tipo che mi hai detto per un rewirte
    In che senso, per un rewrite?
    Il codice di esempio che trovi sul manuale di php lo puoi adattare in 5 minuti ad un rewrite... dipende tu cosa vuoi fare

  8. #8
    IO vorrei fare piu o meno questo :

    www.sito.it/news.php?id=1 (dove il titolo è la mamma di paolo è grassa)

    trasformarlo in

    www.sito.it/news/mamma-paolo-grassa.php


    capisci cosa voglio dire ??

  9. #9
    Originariamente inviato da Petro_suse91
    Infatti è proprio da quella discussione che è nata la mia idea
    cHE idea hai avuto ?

  10. #10
    Originariamente inviato da stefano3804
    IO vorrei fare piu o meno questo :

    www.sito.it/news.php?id=1 (dove il titolo è la mamma di paolo è grassa)

    trasformarlo in

    www.sito.it/news/mamma-paolo-grassa.php


    capisci cosa voglio dire ??
    Yep.
    Vedi se questo mio intervento su un altro forum ti può tornare utile:
    http://www.prozone.it/forum/index.ph...ndpost&p=11466

    Riguardo all'idea... stavo parlando dello script che usa la funzione levenshtein per creare il "Forse Cercavi..."

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.