--- roundup/backends/indexer_dbm.py.orig 2008-01-10 21:02:39.535749400 +0100 +++ roundup/backends/indexer_dbm.py 2008-01-10 21:18:02.210993447 +0100 @@ -156,21 +156,33 @@ # word outside the bounds of what we index - ignore continue word = word.upper() - entry = self.words.get(word) # For each word, get index - entries[word] = entry # of matching files - if not entry: # Nothing for this one word (fail) + import re + pattern = re.compile(word) + found = False + for k,v in self.words.items(): + if pattern.match(k): + if not entries.has_key(word): + entries[word] = [v] + else: + entries[word].append(v) + found = True + # entry = self.words.get(word) # For each word, get index + # of matching files + if not found: # Nothing for this one word (fail) return {} if hits is None: hits = {} - for k in entry.keys(): - if not self.fileids.has_key(k): - raise ValueError, 'Index is corrupted: re-generate it' - hits[k] = self.fileids[k] + for e in entries[word]: + for k in e.keys(): + if not self.fileids.has_key(k): + raise ValueError, 'Index is corrupted: re-generate it' + hits[k] = self.fileids[k] else: # Eliminate hits for every non-match for fileid in hits.keys(): - if not entry.has_key(fileid): - del hits[fileid] + for e in entries[word]: + if not e.has_key(fileid): + del hits[fileid] if hits is None: return {} return hits.values()