настоящее время у меня что-то вдоль линий этого (взятый из SQLAlchemy documentation):Использование WhooshAlchemy с присоединяемой таблицы наследования
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',
}
Использование WhooshAlchemy, я хотел бы сделать name
колонку для поиска, но также и engineer_name
manager_name
для Engineer
и Manager
класс соответственно.
Я пытался ставить отдельный __searchable__
список, содержащий их столбцы в каждом классе, но это дает мне следующую ошибку:
whoosh.fields.UnknownFieldError: No field named 'name' in <Schema: ['id', 'engineer_name']>
Я также попытался положить __searchable__
список в каждом из них, который содержит только столбцы, определенные в этом конкретном классе, но это не дает мне никаких результатов, когда я использую whoosh_search
по запросу, несмотря на наличие правильных условий поиска, которые должны возвращать хотя бы 1 результат.
Что это самый простой способ сделать это?