[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