public void RecalculateIDFs()
{
foreach (var term in Terms.Keys)
{
Terms[term].IDF = 0;
}
// Get all the document IDs.
var totalDocs = new HashSet<uint>();
foreach (var term in Terms.Values)
foreach (var docID in term.DocumentIDsByTFs.Keys)
{
if (!totalDocs.Contains(docID))
{
totalDocs.Add(docID);
}
}
var totalDocCount = (float)totalDocs.Count;
foreach (var term in Terms.Keys)
{
// How many documents contain the term?
var docsFound = Terms[term].DocumentIDsByTFs.Count;
Terms[term].IDF = (float)Math.Log(totalDocCount / docsFound, 2);
}
minipulatedSinceLastRecalc = false;
}