首页 文章

在Sequelize 4中有没有办法进行MySQL FullText搜索?

提问于
浏览
2

我正在尝试使用Sequelize 4生成如下所示的查询:

SELECT * FROM authors WHERE MATCH (name, altName) AGAINST ('shakespeare');

我曾经能够做到这一点:

Author.find({
           where: ['MATCH (name, altName) AGAINST (?)',
                  ['shakespeare']]
           })
          .then((result) => {
              console.log(result);
          });

但现在,升级到Sequelize 4后,我收到此错误:

Error: Support for literal replacements in the `where` object has been removed.

1 回答

  • 2

    在Sequelize 4.0中你可以这样做:

    Author.find({
        where: Sequelize.literal(`MATCH (name, altName) AGAINST('shakespeare' IN NATURAL LANGUAGE MODE)`),
      }).then(…);
    

    如果您需要对按相关性排序的记录列表进行评分,请使用以下示例:

    Author.findAll({
        attributes: { include:[[Sequelize.literal(`MATCH (name, altName) AGAINST('shakespeare' IN NATURAL LANGUAGE MODE)`), 'score']] },
        where: Sequelize.literal(`MATCH (name, altName) AGAINST('shakespeare' IN NATURAL LANGUAGE MODE)`),
        order:[[Sequelize.literal('score'), 'DESC']],
      });
    

    我希望这有帮助 .

相关问题