2009-06-25 10 views
0

Ma structure: dans chaque catégorie il y a des textes. Ces textes sont des entrées propres. Donc, table 'catégorie' et table 'textes'. Il y a environ 90 textes dans chaque catégorie, chaque texte est d'environ 300 caractères.créer des mots-clés dynamiquement à partir de mysql en utilisant php

Ce que je veux faire est de faire des étiquettes de méta (mots-clés) pour les catégories. Comment> obtenir tous les «textes» pertinents et classer tous les mots et prendre les 10 premiers mots. Ces 10 premiers seront le mot-clé meta tag de la catégorie.

Maintenant .. l'astuce> comment récupérer ces 10 premiers mots. Actuellement> J'ai que chaque texte (est un texte intégral) sera divisé en un tableau par mot. Ce tableau (en PHP) sera assez long. Après, je prends la fréquence de chaque mot et le classe de nouveau sur la fréquence. Voila top 10 mots.

Je n'ai pas testé cette procédure, mais je suppose que cela pourrait prendre un peu. Il sera mis en cache, il ne devra donc fonctionner qu'une fois par semaine, mais je n'aimerais pas avoir de délai.

Avez-vous des conseils? Toute aide appréciée.

Merci,

Maurice

+0

Cela ressemble énormément de travail pour soutenir une convention qu'aucun moteur de recherche n'utilise plus http://www.searchengineguide.com/richard-ball/meta-keywords-a.php –

+0

vous avez raison :) c'était aussi comme dans ce que je genre de mots-clés je devrais utiliser dans mon commercialisation. mais thx de toute façon! –

Répondre

0

Ok, maintenant que je l'ai dit ma paix dans le commentaire ci-dessus, je vais arriver à votre algorithme.

Il y a plusieurs façons de le faire, je vais me concentrer sur une approche PHP et laisser les autres SOers en faire d'autres.

Je vais supposer que vous avez déjà interrogé la base de données et enregistré tous les mots comme une liste séparée par des espaces dans les variables textes de $

// 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); 
+0

ah, encore plus agréable que je pensais, thx! –

Questions connexes