removed now superflous expwerimental file. useful contetn moved to icu_I18N.c
[pazpar2-moved-to-github.git] / src / relevance.c
index 5e1fd76..b4177c0 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: relevance.c,v 1.9 2007-04-10 08:48:56 adam Exp $
+/* $Id: relevance.c,v 1.11 2007-05-01 05:04:53 quinn Exp $
    Copyright (c) 2006-2007, Index Data.
 
 This file is part of Pazpar2.
@@ -63,6 +63,7 @@ static struct word_trie *create_word_trie_node(NMEM nmem)
 
 static void word_trie_addterm(NMEM nmem, struct word_trie *n, const char *term, int num)
 {
+
     while (*term) {
         int c = tolower(*term);
         if (c < 'a' || c > 'z')
@@ -231,7 +232,17 @@ void relevance_prepare_read(struct relevance *rel, struct reclist *reclist)
         if (!rel->doc_frequency_vec[i])
             idfvec[i] = 0;
         else
-            idfvec[i] = log((float) rel->doc_frequency_vec[0] / rel->doc_frequency_vec[i]);
+        {
+            // This conditional may be terribly wrong
+            // It was there to address the situation where vec[0] == vec[i]
+            // which leads to idfvec[i] == 0... not sure about this
+            // Traditional TF-IDF may assume that a word that occurs in every
+            // record is irrelevant, but this is actually something we will
+            // see a lot
+            if ((idfvec[i] = log((float) rel->doc_frequency_vec[0] /
+                            rel->doc_frequency_vec[i])) < 0.0000001)
+                idfvec[i] = 1;
+        }
     }
     // Calculate relevance for each document
     for (i = 0; i < reclist->num_records; i++)