我试图在InnoDB表中使用MySQL全文搜索。我有必要的索引。该表非常简单,只有几列。
CREATE TABLE `units` (
`UnitId` BIGINT(20) NOT NULL AUTO_INCREMENT,
`Name` VARCHAR(15) COLLATE utf8_general_ci NOT NULL,
`ShortName` VARCHAR(5) COLLATE utf8_general_ci NOT NULL,
PRIMARY KEY (`UnitId`) USING BTREE,
UNIQUE KEY `IX_Name` (`Name`) USING BTREE,
UNIQUE KEY `IX_ShortName` (`ShortName`) USING BTREE,
FULLTEXT KEY `UNITS_NAME_FTS_IDX` (`Name`),
FULLTEXT KEY `UNITS_SHORTNAME_FTS_IDX` (`ShortName`)
) ENGINE=InnoDB
AUTO_INCREMENT=31 CHARACTER SET 'utf8' COLLATE 'utf8_general_ci';
执行以下查询
SELECT
`Extent1`.`UnitId`,
`Extent1`.`Name`,
`Extent1`.`ShortName`
FROM `units` AS `Extent1`
WHERE
((MATCH(`Extent1`.`Name`) AGAINST ('kilometer*' IN BOOLEAN MODE)) > 0) OR
((MATCH(`Extent1`.`ShortName`) AGAINST ('kilometer*' IN BOOLEAN MODE)) > 0)
LIMIT 20
表格中只有几行。
'26', 'Kilometer', 'km'
'27', 'Meter', 'm'
'28', 'Liter', 'l'
'29', 'Kilogram', 'kg'
'30', 'Gram', 'g'
在测试执行期间,这些行会不断删除并重新添加。大多数情况下,查询会返回我正在寻找的行。但由于某种原因,它随机开始失败并停止返回任何行。他们得分= 0,然后。其他表格也是如此。
我知道外部FTS搜索引擎,但我可能无法使用它们。我不想使用MyISAM引擎。
失败的原因可能是什么?我错过了什么吗?
编辑: 重建FTS索引并没有帮助。查询在实体框架和控制台中均失败。