2011-10-13 3 views
0

j'ai essayé d'obtenir la fréquence des termes d'un document usin TermFreqVvector, voici mon code,problème avec TermFreqVector dans lucene.net

LuceneStore.Directory dir = LuceneStore.FSDirectory.GetDirectory ("e :/indexDir ", true);

IndexWriter writer = new IndexWriter(dir, new StandardAnalyzer(), true); 
    Document doc = new Document(); 
    doc.Add(new Field("Content", "This is a beautiful house", Field.Store.YES, Field.Index.TOKENIZED, Field.TermVector.YES)); 
    writer.AddDocument(doc); 
    writer.Optimize(); 
    writer.Close(); 

    IndexReader reader = IndexReader.Open(dir); 
    TermFreqVector termFreq = reader.GetTermFreqVector(0, "content"); 
    string[] term = termFreq.GetTerms(); 

mais je reçois le msg d'erreur « référence d'objet non définie à une instance d'un objet » sur la corde ligne [] = terme termFreq.GetTerms();

quelqu'un peut-il aider !!!!!

Répondre

1

La méthode GetTermFreqVector est documentée pour renvoyer une valeur nulle si l'indicateur storeTermVector n'a pas été défini. Êtes-vous sûr que cela est défini dans votre cas?

EDIT: Je viens de remarquer que vous utilisez "Content" comme nom de champ dans le constructeur, et ensuite "content" lorsque vous demandez le terme vecteur de fréquence. Cela pourrait facilement être le problème si les noms de champs sont sensibles à la casse. Je vous suggère de créer une chaîne constante utilisée partout où vous voulez faire référence au champ, par souci de cohérence.

+0

non .. pouvez-vous s'il vous plaît dites-moi comment le faire ... – user111

+0

@kaaggi: Voir ma modification - Je soupçonne que c'est en fait juste un problème de boîtier. –

+0

merci beaucoup ... dat était une erreur idiote ... merci beaucoup .. c'était une aide précieuse :) – user111