如何在Knex中使用ngram解析器创建全文索引?
在Knex中为MySQL全文索引添加ngram解析器
核心结论
Knex的Schema Builder原生table.index()方法不支持直接配置MySQL全文索引的WITH PARSER选项,因为其索引配置参数里没有对应字段。不过你可以通过两种方式实现需求:
方案1:创建表后执行RAW语句(你当前使用的方式)
这种方式逻辑清晰,适合需要分开处理表结构和索引的场景:
knex.schema .createTable('clusters', (table) => table.string('name').notNullable()) .raw('ALTER TABLE `clusters` ADD FULLTEXT INDEX `name_text_idx` (`name`) WITH PARSER `ngram`');
方案2:在createTable()内部使用table.raw()定义索引
可以在建表语句中直接嵌入索引定义,避免额外的ALTER操作:
knex.schema.createTable('clusters', (table) => { table.string('name').notNullable(); // 直接通过raw语句定义带ngram解析器的全文索引 table.raw('FULLTEXT INDEX `name_text_idx` (`name`) WITH PARSER `ngram`'); });
内容的提问来源于stack exchange,提问作者Si Wei Yang
相关产品推荐
相关产品推荐

