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

    PHP / MYSQL ] Estrarre le occorrenze di frasi a 2 / 3 / 4 parole da campi varchar

    Ho una classica tabella mysql con campo varchar(255).

    Vorrei estrapolare da questa tabella tutte le frasi a 2 a 3 ed a 4 parole ed a limite creare un piccolo db in sqlite o tanti file json del tipo:

    fondotinta compatto | 8
    fondotinta compatto idratante | 4
    fondotinta compatto idratante pupa | 2

    In pratica vorrei crearmi un input autosuggest con i contro...

    come posso fare?

  2. #2
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,503
    Secondo me stai pensando il sistema nel modo sbagliato.

    Ti dico come lo vedrei io (se ho ben capito cosa vuoi fare)

    In un form c'è un campo text, l'utente inizia a digitare: f o n
    a partire dal terzo carattere avvierei una chiamata ajax verso uno script php che va ad eseguire una query sul db cercando tutti i risultati in cui il campo in questione inizia con "fon", con un count distinct puoi anche avere il numero delle occorrenze di ogni voce, così restituisci questi dati alla chiamata ajax e mostri le possibili scelte.
    Quando l'utente scriverà "fondotinta compatto i" il primo scomparirà e verranno mostrati solo quelli che rispondono a questa stringa.

    Non c'è bisogno di inventarsi chissà cosa.
    Ultima modifica di Alhazred; 20-05-2014 a 15:34

  3. #3
    Questo già c'e' nel senso è una delle fonti dell'autosuggest ed è pesante infatti lo considero solo dal 4 carattere in poi altrimenti mysql consuma molta ram (è un vps non un dedicato)

    Ad ogni modo io in pratica cerco di crearmi un dizionario di questa tabella di titoli e descrizioni dove ogni voce del dizionario è almeno 3-4-5 parole.

    Non esiste uno split che come argomento prende due spazi? :|

    Quote Originariamente inviata da Alhazred Visualizza il messaggio
    Secondo me stai pensando il sistema nel modo sbagliato.

    Ti dico come lo vedrei io (se ho ben capito cosa vuoi fare)

    In un form c'è un campo text, l'utente inizia a digitare: f o n
    a partire dal terzo carattere avvierei una chiamata ajax verso uno script php che va ad eseguire una query sul db cercando tutti i risultati in cui il campo in questione inizia con "fon", con un count distinct puoi anche avere il numero delle occorrenze di ogni voce, così restituisci questi dati alla chiamata ajax e mostri le possibili scelte.
    Quando l'utente scriverà "fondotinta compatto i" il primo scomparirà e verranno mostrati solo quelli che rispondono a questa stringa.

    Non c'è bisogno di inventarsi chissà cosa.

  4. #4
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,503
    explode(" ", $campo);

    dove $campo è ovviamente il contenuto del campo, ma non so con la tua idea se e quanto ci si guadagni.

  5. #5
    mi sa che explode restituisce un array per ogni parola io di un testo ho bisogno di estrarre frasi a 2 a 3 ed a 4 parole

  6. #6
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,503
    Una volta che hai l'array che problema hai a tirar fuori le parole e metterle dove ti serve?

  7. #7
    Con un array di ogni singola parola che ci faccio se mi servono le occorrenze di frasi ad almeno 2 / 3 / 4 parole di una tabella di 32000 titoli prodotti?

    Non mi serve il dizionario che contenga tutte voci ad 1 singola parola.

  8. #8
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,503
    Facendo l'explode su ogni campo puoi vedere con count() quanti elementi ha l'array e sapere le frasi di quante parole sono composte.

    Ti faccio presente che sì, dovrai fare l'explode su ogni record, ma dovrai eseguire anche l'eventuale funzione che cerchi tu su ogni record trovato.

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.