2010-10-14 9 views
1

Je souhaite stocker les données récupérées toutes les heures à partir de flux RSS dans une base de données ou dans Lucene afin que le texte puisse être facilement indexé pour les comptages de mots.Utilisation de Lucene pour stocker des données à partir de flux RSS

Je dois obtenir le texte des éléments de titre et de description des éléments RSS.

Idéalement, pour chaque recherche horaire d'un aliment donné, je voudrais ajouter une ligne à une table dans un jeu de données composé des colonnes suivantes:

FEED_URL, title_element_text, description_element_text, polling_date_time

De cette , Je peux rechercher n'importe quel élément dans un flux et calculer le nombre de mots clés en fonction du temps requis. Cela peut être fait en tant que table de base de données et hashmaps utilisés pour calculer les comptes. Mais puis-je le faire dans Lucene à ce degré de granularité? Si oui, chaque flux formerait-il un document Lucene ou chaque 'rangée' de la table de base de données en formerait-elle une?

Quelqu'un peut-il conseiller?

Remerciements

Martin O'Shea.

+0

Peut-être que CouchDB sera un meilleur ajustement pour ce genre d'application. –

+0

Spécialement ce CouchApp: http://github.com/maxogden/couchpubtato Je ne sais pas comment vous devriez faire l'indexation, mais l'interrogation est mauvaise, alors mettez en place PubsubHubbub :) –

Répondre

0

Mon analyse syntaxique de votre question est:

for each item in feed: 
    calculate term frequency of item, then add to feed's frequency list 

Ce n'est pas quelque chose qui excelle dans Lucene, de sorte CouchDB ou d'une autre db peut être aussi bon sinon meilleur choix (comme larsmans suggère). Cependant, il peut être fait (d'une manière qui est sans doute un peu plus facile que les autres blocs de données):

HashMap<string, int> terms = new HashMap<string, int>(indexReader.getUniqueTermCount()); 
TermEnum tEnum = indexReader.Terms(); 
while (tEnum.Next()) 
{ 
    results.Add(tEnum.Term().Text(), tEnum.DocFreq()); 
} 

Tout Lucene est vous sauver est la difficulté de calculer l'docfreq, et il sera probablement un peu plus rapide que boucle à travers toutes les lignes vous-même. Mais je serais surpris si la différence de performance est perceptible pour des ensembles de données raisonnablement petits.

Questions connexes