[Checkins] SVN: zope.index/trunk/src/zope/index/text/ 100% coverage for zope.index.text.cosineindex module.

Tres Seaver tseaver at palladion.com
Wed Jun 10 17:40:57 EDT 2009


Log message for revision 100814:
  100% coverage for zope.index.text.cosineindex module.

Changed:
  U   zope.index/trunk/src/zope/index/text/cosineindex.py
  U   zope.index/trunk/src/zope/index/text/tests/test_cosine.py

-=-
Modified: zope.index/trunk/src/zope/index/text/cosineindex.py
===================================================================
--- zope.index/trunk/src/zope/index/text/cosineindex.py	2009-06-10 20:46:51 UTC (rev 100813)
+++ zope.index/trunk/src/zope/index/text/cosineindex.py	2009-06-10 21:40:56 UTC (rev 100814)
@@ -17,9 +17,9 @@
 """
 import math
 
-from zope.index.text.baseindex import BaseIndex, inverse_doc_frequency
+from zope.index.text.baseindex import BaseIndex
+from zope.index.text.baseindex import inverse_doc_frequency
 
-
 class CosineIndex(BaseIndex):
 
     def __init__(self, lexicon, family=None):
@@ -106,25 +106,7 @@
             #print "->", d[wid]
         return d, W
 
-    # The rest are helper methods to support unit tests
 
-    def _get_wdt(self, d, t):
-        wid, = self._lexicon.termToWordIds(t)
-        map = self._wordinfo[wid]
-        return map.get(d, 0) * self._docweight[d]
-
-    def _get_Wd(self, d):
-        return self._docweight[d]
-
-    def _get_ft(self, t):
-        wid, = self._lexicon.termToWordIds(t)
-        return len(self._wordinfo[wid])
-
-    def _get_wt(self, t):
-        wid, = self._lexicon.termToWordIds(t)
-        map = self._wordinfo[wid]
-        return math.log(1 + len(self._docweight) / float(len(map)))
-
 def doc_term_weight(count):
     """Return the doc-term weight for a term that appears count times."""
     # implements w(d, t) = 1 + log f(d, t)

Modified: zope.index/trunk/src/zope/index/text/tests/test_cosine.py
===================================================================
--- zope.index/trunk/src/zope/index/text/tests/test_cosine.py	2009-06-10 20:46:51 UTC (rev 100813)
+++ zope.index/trunk/src/zope/index/text/tests/test_cosine.py	2009-06-10 21:40:56 UTC (rev 100814)
@@ -1,6 +1,6 @@
 ##############################################################################
 #
-# Copyright (c) 2002 Zope Corporation and Contributors.
+# Copyright (c) 2002, 2009 Zope Corporation and Contributors.
 # All Rights Reserved.
 #
 # This software is subject to the provisions of the Zope Public License,
@@ -59,6 +59,44 @@
         from zope.index.text.interfaces import IExtendedQuerying
         verifyObject(IExtendedQuerying, self._makeOne())
 
+    def test__search_wids_empty_wids(self):
+        index = self._makeOne()
+        index.index_doc(1, 'one two three')
+        self.assertEqual(index._search_wids(()), [])
+
+    def test__search_wids_non_empty_wids(self):
+        TEXT = 'one two three'
+        index = self._makeOne()
+        index.index_doc(1, TEXT )
+        wids = [index._lexicon._wids[x] for x in TEXT.split()]
+        relevances = index._search_wids(wids)
+        self.assertEqual(len(relevances), len(wids))
+        for relevance in relevances:
+            self.failUnless(isinstance(relevance[0], index.family.IF.Bucket))
+            self.assertEqual(len(relevance[0]), 1)
+            self.failUnless(isinstance(relevance[0][1], float))
+            self.failUnless(isinstance(relevance[1], float))
+
+    def test_query_weight_empty_wids(self):
+        index = self._makeOne()
+        index.index_doc(1, 'one two three')
+        self.assertEqual(index.query_weight(()), 0.0)
+
+    def test_query_weight_oov_wids(self):
+        index = self._makeOne()
+        index.index_doc(1, 'one two three')
+        self.assertEqual(index.query_weight(['nonesuch']), 0.0)
+
+    def test_query_weight_hit_single_occurence(self):
+        index = self._makeOne()
+        index.index_doc(1, 'one two three')
+        self.failUnless(0.0 < index.query_weight(['one']) < 1.0)
+
+    def test_query_weight_hit_multiple_occurences(self):
+        index = self._makeOne()
+        index.index_doc(1, 'one one two three one')
+        self.failUnless(0.0 < index.query_weight(['one']) < 1.0)
+
 class CosineIndexTest32(CosineIndexTestBase, unittest.TestCase):
 
     def _getBTreesFamily(self):



More information about the Checkins mailing list