Reputation: 7
Here is the code:
public int docLength(String filename) throws IOException {
int length = 0;
TermFreqVector t = indexReader.getTermFreqVector(0, "contents");
for (int i = 0; i < t.getTermFrequencies().length; i++) {
length += t.getTermFrequencies()[i];
}
return length;
}
public int docLength(int id) throws IOException {
int length = 0;
TermFreqVector t = indexReader.getTermFreqVector(id, "contents");
for (int i = 0; i < t.getTermFrequencies().length; i++) {
length += t.getTermFrequencies()[i];
}
return length;
}
The error is :
Exception in thread "main" java.lang.Error: Unresolved compilation problems:
TermFreqVector cannot be resolved to a type
The method getTermFreqVector(int, String) is undefined for the type IndexReader
at BM25.docLength(BM25.java:96)
at BM25.avgDocLength(BM25.java:130)
Upvotes: 0
Views: 90
Reputation: 33351
Accessing and traversing term vectors changed significantly in 4.0. The Migration Guide is a very helpful resource on that and other changes from 3.6 to 4.0.
In this case, you'll need to access a Terms
instance through a call to IndexReader.getTermVector
:
int length = 0;
TermEnum terms = indexReader.getTermVector(id, "contents").iterator();
while (terms.next())
length += terms.totalTermFreq(null);
return length;
Upvotes: 1