4

我有带有全文索引的 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+'%')))
...

我想用 'MATCH/AGAINST IN BOOLEAN MODE' 构造替换 LIKE,但我不知道如何

4

1 回答 1

4

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

Trans.lang_name.match(str_to_match)

str_to_match您要匹配的字符串在哪里。

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

'MATCH(trans.lang_name) AGAINST (%s IN BOOLEAN MODE)' % str_to_match
于 2012-10-23T10:18:20.000 回答