2011-07-11 3 views
2

J'ai donc une table avec deux colonnes "titre" et "url". Les lignes vont en tant que tel:supprimer les caractères similaires qui apparaissent dans toutes les lignes

Title        url 

    Galago - Wikipedia     http://en.wikipedia.org/wiki/Galago   
    Characteristics - Wikipedia   http://en.wikipedia.org/wiki/Galago 
    Classification - Wikipedia   http://en.wikipedia.org/wiki/Galago 
    Myst- Gamestop      http://www.gamestop.com/ds/games/myst/69424 
    Plot- Gamestop      http://www.gamestop.com/ds/games/myst/69424 

ma question est, comment pourrais-je supprimer les caractères communs qui sont présents dans toutes les lignes d'une certaine URL (remove - Wikipédia des trois premiers, et - Gamestop de l'autre 2). Ceci est juste un exemple mineur .... J'ai beaucoup d'autres lignes qui ont le même modèle (ils ont des caractères communs, des mots, qui se reproduisent dans toutes les lignes d'une certaine URL). Je voulais ajouter que je stocke ces valeurs à partir d'un tableau javacript

+0

Est-ce que l'intention est d'économiser de l'espace disque en ne stockant pas de données supplémentaires? – mockobject

+0

non c'est pour faciliter la recherche – re1man

+0

et autocomplete plus raffiné – re1man

Répondre

0

Je pense que la plupart des solutions automatisées à ce risque de supprimer des données que vous souhaitez conserver. Un mot ou une expression qui se produit sur plusieurs lignes n'est pas nécessairement redondant. Un couple de méthodes potentielles, mais encore peu fiables, viennent à l'esprit. Ceux-ci ne fonctionneraient que si vous cherchez des mots entiers.

  1. Lisez tous les titres dans un tableau et créez un tableau de listes de mots en divisant chaque titre en mots. Vous pouvez ensuite déterminer la fréquence de chaque mot et utiliser cette information pour supprimer les mots indésirables des titres. Si vous avez beaucoup de données, cette méthode pourrait utiliser beaucoup de mémoire ...

  2. Analyser chaque URL, extraire le nom d'hôte, le diviser en utilisant un point (.) En tant que délimiteur, puis rechercher et supprimer occurrences de ces chaînes du titre. Vous pouvez choisir de créer une liste blanche de chaînes à ignorer, comme www, com, co, uk, net, org, etc. Cette méthode peut fonctionner si les mots indésirables sont trouvés dans le nom de domaine (comme dans vos exemples).

+0

merci, je vais l'examiner! – re1man

1

Si toutes vos chaînes sont dans le format indiqué ci-dessus pour la colonne de titre, je pense que la meilleure approche peut être d'appliquer une expression régulière au titre avant de l'insérer dans la table de base de données. Cette expression régulière peut capturer toutes les données précédant le caractère "-" et rejeter les données "dupliquées" qui suivent le "-".

Informations sur les expressions régulières sur les chaînes en PHP se trouve ici: http://php.net/manual/en/function.preg-match.php

0

Vous pouvez normaliser l'info url dans une autre table ... donc comme prendre la colonne url et en faire URL_ID et créer une table url cela fournit une colonne d'URL et une colonne de titre. Titre serait comme Wikipedia ou Gamestop etc Puis dans la table d'origine stocker le titre avec juste le titre ne comprenant pas le titre de l'URL.

Peut-être que cela ne fonctionnera pas très bien avec les requêtes que vous essayez de faire, mais de cette façon, vous pouvez probablement rechercher par URL, titre de l'url, ou titre ou toute combinaison de ces facilement.

Questions connexes