def __init__(self, fields=None, required=('name', 'description', 'url'), whoosh_index=None): """ - fields : list of fields to use, or None to calculate dynamically - required : required data (strings) - whoosh_index : directory to keep whoosh index in """ self.required = set(required) # reserved fields self.reserved = self.required.copy() self.reserved.update(['modified']) # last modified, a computed value self.search = WhooshSearch(whoosh_index=whoosh_index) # classifier fields self._fields = fields self.field_set = set(fields or ())