I currently have something along the lines of this (taken from the SQLAlchemy documentation):
class Employee(Base):
__tablename__ = 'employee'
id = Column(Integer, primary_key=True)
name = Column(String(50))
type = Column(String(50))
__mapper_args__ = {
'polymorphic_identity':'employee',
'polymorphic_on':type
}
class Engineer(Employee):
__tablename__ = 'engineer'
id = Column(Integer, ForeignKey('employee.id'), primary_key=True)
engineer_name = Column(String(30))
__mapper_args__ = {
'polymorphic_identity':'engineer',
}
class Manager(Employee):
__tablename__ = 'manager'
id = Column(Integer, ForeignKey('employee.id'), primary_key=True)
manager_name = Column(String(30))
__mapper_args__ = {
'polymorphic_identity':'manager',
}
Using WhooshAlchemy, I'd like to make the name
column searchable, but also engineer_name
and manager_name
for the Engineer
and Manager
class respectively.
I've tried putting a separate __searchable__
list containing their columns into each class, but that gives me the following error:
whoosh.fields.UnknownFieldError: No field named 'name' in <Schema: ['id', 'engineer_name']>
I've also tried putting a __searchable__
list into each one that only contains the columns defined on that specific class, but that gives me no results at all when I use whoosh_search
on a query, despite having valid search terms that should return at least 1 result.
What's the easiest way to do this?