Changeset 375
- Timestamp:
- 01/19/06 21:43:19 (3 years ago)
- Files:
-
- reposearchplugin/0.9/tracreposearch/indexer.py (modified) (5 diffs)
- reposearchplugin/0.9/tracreposearch/search.py (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
reposearchplugin/0.9/tracreposearch/indexer.py
r371 r375 130 130 131 131 def need_reindex(self, repo): 132 re sult = not hasattr(self, 'meta') or\133 repo.youngest_rev != int(self.meta.get('last-repo-rev', -1)) \134 or self.env.config.get('repo-search', 'include', ' 1') \132 return not hasattr(self, 'meta') \ 133 or repo.youngest_rev != int(self.meta.get('last-repo-rev', -1)) \ 134 or self.env.config.get('repo-search', 'include', '') \ 135 135 != self.meta.get('index-include', '') \ 136 136 or self.env.config.get('repo-search', 'exclude', '') \ 137 != self.meta.get('index-exclude', '1') 138 return result 137 != self.meta.get('index-exclude', '') 139 138 need_reindex = synchronized(need_reindex) 140 139 … … 155 154 _bigram_search = synchronized(_bigram_search) 156 155 157 def reindex_node(self, node):156 def _reindex_node(self, node): 158 157 def node_tokens(): 159 158 for token in self._strip.finditer(node.get_content().read()): … … 185 184 self.files[node.path] = node_words 186 185 self.revs[node.path] = str(node.rev) 187 reindex_node = synchronized(reindex_node) 186 187 def _invalidate_file(self, file): 188 if file in self.files: 189 for word in self.files[file]: 190 word_files = self.words[word] 191 word_files.discard(file) 192 self.words[word] = word_files 193 self.env.log.debug("Invalidated stale index entry %s" % file) 188 194 189 195 def reindex(self, repo = None): … … 194 200 self.env.log.debug('Indexing repository (either repository or indexing criteria have changed)') 195 201 self._open_storage('c') 202 new_files = set() 196 203 for node in TracRepoSearchPlugin(self.env).walk_repo(repo): 197 204 if node.kind != Node.DIRECTORY: … … 199 206 if int(self.revs.get(node.path, -1)) != node.rev: 200 207 self.env.log.debug("Reindexing %s" % node.path) 201 # Invalidate old index 202 if node.path in self.files: 203 for word in self.files[node.path]: 204 word_files = self.words[word] 205 word_files.discard(node.path) 206 self.words[word] = word_files 207 self.reindex_node(node) 208 self._invalidate_file(node.path) 209 self._reindex_node(node) 210 new_files.add(node.path) 211 212 # All files that don't match the new filter criteria must be purged 213 # from the index 214 invalidated_files = set(self.files.keys()) 215 invalidated_files.difference_update(new_files) 216 for invalid in invalidated_files: 217 self._invalidate_file(invalid) 208 218 209 219 self.sync(repo) reposearchplugin/0.9/tracreposearch/search.py
r371 r375 35 35 return 1 36 36 37 return not include and not exclude37 return not includes 38 38 39 39 def do_walk(path): … … 72 72 self.indexer = Indexer(self.env) 73 73 self.indexer.reindex(repo) 74 walker = lambda repo, query: [repo.get_node(filename) for filename in self.indexer.find_words(query)] 74 walker = lambda repo, query: [repo.get_node(filename) for filename 75 in self.indexer.find_words(query)] 75 76 except TracError: 76 77 def full_walker(repo, query):
