0

我有一个名为“Item”的表,它是 INNODB,具有以下布局:

ID 描述 -> 全文索引。
日期

全文索引设置为索引 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);

我尝试了一些不同的东西,但它们完全没有区别。提前致谢!

4

0 回答 0