2010-03-03 6 views
0

J'ai un problème particulier et j'ai besoin de connaître la meilleure façon de le résoudre.coding inspiration nécessaire - mots-clés contenus dans la chaîne

J'ai une chaîne php qui peut contenir un certain nombre de mots-clés (tags en fait). Par exemple: -

"seo, adwords, google"

ou

"développement web, développement communautaire, web design"

Je veux créer un pool de mots-clés qui sont liés, donc tout seo, marketing en ligne des mots-clés connexes ou tous les mots-clés liés au développement web. Je veux vérifier la chaîne de mots-clés/tags par rapport à ces groupes de mots-clés et si par exemple seo ou adwords est contenu dans la chaîne de mots-clés, il est comparé au pool de mots-clés pour le marketing en ligne et un contenu particulier.

Je souhaite connaître la meilleure façon de coder ceci. Je devine une sorte de table de hachage ou de tableau, mais je ne suis pas sûr de la meilleure façon de l'aborder.

Des idées?

Merci

Jonathan

Répondre

1

Trois approches viennent à l'esprit, mais je suis sûr qu'il pourrait y avoir plus. Bien sûr, dans tous les cas, je stockerais les valeurs dans une table de base de données (ou un fichier de configuration, ou autre en fonction de votre application) afin de pouvoir l'éditer facilement.

1) Le plus simple: Convertir la liste en une expression régulière de la forme "mot-clé1 | mot-clé2 | mot-clé3" et voir si l'entrée correspond. 2) Moyen: Ajouter les mots à une table de hachage, puis diviser l'entrée en mots (vous devrez peut-être utiliser le remplacement d'expression régulière pour supprimer la ponctuation) et essayer de trouver chaque mot d'entrée dans la table de hachage. 3) Plus difficile: Cela peut ne pas fonctionner selon votre situation exacte, mais si tout le contenu possible peut être indexé par une solution de recherche (comme Apache SOLR, par exemple) alors votre liste de mots-clés pourrait être utilisée comme recherche chaîne et vous pourriez renvoyer des résultats au-dessus d'un niveau de pertinence particulier.

Il est difficile de savoir exactement quelle solution fonctionnerait le mieux sans en savoir plus sur vos données source. Un grand nombre de mots-clés peut bloquer une expression régulière, mais s'il s'agit d'une liste restreinte, cela peut très bien fonctionner. Si vos entrées sont longues alors # 2 ne fonctionnera pas si bien parce que vous devez tester chaque mot d'entrée. Comme toujours, votre kilométrage peut varier, donc je commencerais par la solution la plus simple que je pensais fonctionner et voir si la performance est acceptable.

+0

Merci David, est-ce que la première (approche la plus simple) gérerait une situation où "seo" OU "adwords" serait comparé au pool de marketing en ligne? –

+0

Je ne vois pas pourquoi pas. Si votre pool de mots-clés de marketing en ligne était "seo, adwords, adsense" vous construiriez une regex "seo | adwords | adsense". Si vos mots clés d'entrée étaient alors "New SEO Thingamajig", cela correspondrait à l'expression régulière, tout comme "Google AdSense est soigné". –

+0

Salut David, merci encore, regex n'est pas mon point fort - pouvez-vous donner une idée sur la façon de construire cela en termes de syntaxe s'il vous plaît. –

Questions connexes