From 27364e1fbc6c5e3aed7c753c85910ba0cb267de3 Mon Sep 17 00:00:00 2001 From: Eevee Date: Sun, 12 Sep 2010 20:51:51 -0700 Subject: [PATCH] Fixes for Whoosh 1.0, and better index recreation. --- pokedex/lookup.py | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/pokedex/lookup.py b/pokedex/lookup.py index 60c1b85..774df92 100644 --- a/pokedex/lookup.py +++ b/pokedex/lookup.py @@ -69,10 +69,11 @@ class LanguageWeighting(whoosh.scoring.Weighting): # Apply extra weight weight = weight * self.extra_weights.get(text, 1.0) - if doc['language'] == None: + language = doc.get('language') + if language is None: # English (well, "default"); leave it at 1 return weight - elif doc['language'] == u'Roomaji': + elif language == u'Roomaji': # Give Roomaji a little boost; it's most likely to be searched return weight * 0.9 else: @@ -175,7 +176,13 @@ class PokedexLookup(object): display_name=whoosh.fields.STORED, # non-lowercased name ) - if not os.path.exists(self.directory): + if os.path.exists(self.directory): + # create_in() isn't totally reliable, so just nuke whatever's there + # manually. Try to be careful about this... + for f in os.listdir(self.directory): + if re.match('^_?(MAIN|SPELL)_', f): + os.remove(os.path.join(self.directory, f)) + else: os.mkdir(self.directory) self.index = whoosh.index.create_in(self.directory, schema=schema, @@ -382,7 +389,7 @@ class PokedexLookup(object): results.append(LookupResult(object=obj, indexed_name=record['name'], name=record['display_name'], - language=record['language'], + language=record.get('language'), iso639=record['iso639'], iso3166=record['iso3166'], exact=exact))