+class LanguageWeighting(whoosh.scoring.Weighting):
+ """A scoring class that forces otherwise-equal English results to come
+ before foreign results.
+ """
+
+ def score(self, searcher, fieldnum, text, docnum, weight, QTF=1):
+ doc = searcher.stored_fields(docnum)
+ if doc['language'] == None:
+ # English (well, "default"); leave it at 1
+ return weight
+ elif doc['language'] == u'Roomaji':
+ # Give Roomaji a bit of a boost, as it's most likely to be searched
+ return weight * 0.95
+ else:
+ # Everything else can drop down the totem pole
+ return weight * 0.9
+