全文搜索MySQL随机失败

时间:2015-03-15 19:32:34

标签: mysql sql full-text-search innodb

我试图在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索引并没有帮助。查询在实体框架和控制台中均失败。

0 个答案:

没有答案