1.1 --- a/iixr/terms.py Tue Sep 15 00:32:56 2009 +0200
1.2 +++ b/iixr/terms.py Wed Sep 16 00:45:18 2009 +0200
1.3 @@ -19,6 +19,7 @@
1.4 """
1.5
1.6 from iixr.files import *
1.7 +from iixr.positions import *
1.8 from os.path import commonprefix # to find common string prefixes
1.9 from bisect import bisect_right # to find terms in the dictionary index
1.10
1.11 @@ -208,6 +209,7 @@
1.12 self.info_reader = info_reader
1.13 self.index_reader = index_reader
1.14 self.position_dict_reader = position_dict_reader
1.15 + self.position_dict_iterator = None # for sequential/iterator access
1.16
1.17 self.terms = []
1.18 try:
1.19 @@ -322,8 +324,13 @@
1.20 """
1.21
1.22 term, offset, frequency, doc_frequency = self.info_reader.read_term()
1.23 - positions = self._get_positions(offset, doc_frequency)
1.24 - return term, frequency, doc_frequency, positions
1.25 +
1.26 + # For sequential access, attempt to reuse any iterator.
1.27 +
1.28 + if self.position_dict_iterator is None:
1.29 + self.position_dict_iterator = self._get_positions(offset, doc_frequency)
1.30 +
1.31 + return term, frequency, doc_frequency, ResetPositionDictionaryIterator(self.position_dict_iterator, offset, doc_frequency)
1.32
1.33 # Query methods.
1.34