user111
user111

Reputation: 85

trouble with TermFreqVector in lucene.net

i've been trying to get the frequency of terms of a document usin TermFreqVvector, here is my code,

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();

but i get the error msg "Object reference not set to an instance of an object" on the line string[] term = termFreq.GetTerms();

can anyone help!!!!!

Upvotes: 0

Views: 395

Answers (1)

Jon Skeet
Jon Skeet

Reputation: 1503769

The GetTermFreqVector method is documented to return null if the storeTermVector flag hasn't been set - are you sure it's set in your case?

EDIT: I've just noticed that you're using "Content" as the field name in the constructor, and then "content" when you're asking for the term frequency vector. That could easily be the problem if field names are case-sensitive. I suggest you create a constant string used everywhere you want to refer to the field, for consistency.

Upvotes: 1

Related Questions