SQLAlchemy Match Against 子句

Ken*_*ers 5 python sqlalchemy

我有带有全文索引的 MySQL 表。我想知道如何将 MATCH ... AGAINST() 与 SQLAlchemy 一起使用。你有一些例子吗?

...
    trs = dbsession.query(Trans).filter(Trans.client_id==user_id)
    if search and search != '':
        trs = trs.filter(or_(Trans.transcribe.like('%'+search+'%'), Trans.lang_name.like('%'+search+'%')))
...
Run Code Online (Sandbox Code Playgroud)

我想用“MATCH/AGAINST IN BOOLEAN MODE”结构替换 LIKE,但我不知道如何做

Ped*_*ano 5

您应该只需要使用该子句:

Trans.lang_name.match(str_to_match)
Run Code Online (Sandbox Code Playgroud)

其中str_to_match是您要匹配的字符串。

这将(对于 MySQL 方言)编译为(假设Trans模型表名称为trans并且模型属性与列名称匹配):

'MATCH(trans.lang_name) AGAINST (%s IN BOOLEAN MODE)' % str_to_match
Run Code Online (Sandbox Code Playgroud)