我有一个名为“Item”的表,它是INNODB并具有以下布局:
ID 说明 - >全文索引 DATE
全文索引设置为索引1个字符的单词,遗憾的是我无法绕过此要求。当用户搜索较大的单词(例如“item 59929”)时,以下例程运行正常,但是某些情况会导致搜索类似“item 1 a 22 4 c”,其中空格必须保持这种方式。执行这些1个字符搜索时的数据库CRAWLS。在日常工作中处理这个问题的最佳方法是什么?我确实遇到过障碍,因为看起来你无法使用innodb引擎在临时表上创建全文索引,他们必须通过myisam。以下是我目前使用的简化版本:
drop temporary table if exists tmpFilter;
CREATE TEMPORARY TABLE tmpFilter(
ID INT,
Description Varchar(320),
Date datetime,
PRIMARY KEY(ID)) ENGINE=MYISAM; -- HAS TO BE MY ISAM as of 5.6 FULL TEXT ON TEMP INNODB IS NOT ALLOWED
ALTER TABLE tmpFilter ADD FULLTEXT INDEX(description); -- ADD FULL TEXT
ALTER TABLE tmpFilter DISABLE KEYS;
INSERT INTO tmpFilter
SELECT ID, Description, Date
FROM item
WHERE date > DATE_SUB(NOW(), INTERVAL 15 MONTH)
AND description LIKE CONCAT('%item 1 2 a 4%');
AND MATCH (description) AGAINST ('"1 2 a 4" @30' in boolean mode);
ALTER TABLE tmpFilter ENABLE KEYS;
SELECT *
FROM tmpFILTER
WHERE MATCH (description) AGAINST ('+item +1 +2 +a +4' in boolean mode);
我尝试了一些不同的东西,但它们完全没有区别。提前谢谢!