Domanda

La mia struttura: in ogni categoria ci sono dei testi. Questi testi sono voci proprie. Quindi, tabella 'categoria' e tabella 'testi'. Ci sono circa 90 testi in ogni categoria, ogni testo è di circa 300 caratteri.

Quello che voglio fare è creare meta tag (parole chiave) per le categorie. Come & Gt; ottenere tutti i "testi" pertinenti, classificare tutte le parole e prendere le prime 10 parole. Questi primi 10 saranno i meta tag della parola chiave della categoria.

Ora ... il trucco > come recuperare quelle prime 10 parole. Attualmente & Gt; Ho che ogni testo (è un testo completo) sarà diviso in una matrice per parola. Questo array (in php) sarà piuttosto lungo. Dopo, prendo la frequenza di ogni parola e la classifica di nuovo in base alla frequenza. Le 10 migliori parole di Voila.

Non ho testato questa procedura ma immagino che potrebbe volerci un po '. Verrà memorizzato nella cache, quindi dovrà essere eseguito solo una volta ogni settimana o giù di lì, ma non vorrei ottenere un timeout.

Ragazzi avete qualche consiglio? Qualsiasi aiuto è stato apprezzato.

Grazie,

Maurice

È stato utile?

Soluzione

Ok, ora che ho detto la mia pace nel commento sopra, passerò al tuo algoritmo.

Esistono diversi modi per farlo, mi concentrerò su un approccio pesante per PHP e lascerò che altri SOer ne facciano altri.

Suppongo che tu abbia già interrogato il database e memorizzato tutte le parole come un elenco separato da spazi nella variabile $ text

// Sample data in $texts
$texts      = "orange orange apple apple apple banana";
$withCounts = array_count_values( explode( ' ', $texts ) );

asort( $withCounts );
$topTen = array_keys( array_reverse( array_slice( $withCounts, -10 ) ) );

print_r( $topTen );
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top