1、全文索引提取:
sql
SELECT word FROM (
SELECT SUBSTRING_INDEX(SUBSTRING_INDEX(full_text, ' ', n.digit+1), ' ', -1) word
FROM articles
JOIN (
SELECT 0 digit UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL
SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL
SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL SELECT 9
) n ON LENGTH(REPLACE(full_text, ' ', '')) <= LENGTH(full_text)-n.digit
) words
WHERE word != '';
2、使用 MySQL 全文检索功能:
sql
CREATE FULLTEXT INDEX ft_index ON articles(content);
关键词处理存储过程
sql
DELIMITER //
CREATE PROCEDURE extract_keywords(IN table_name VARCHAR(100), IN column_name VARCHAR(100))
BEGIN
DECLARE done INT DEFAULT FALSE;
DECLARE record_id INT;
DECLARE content_text TEXT;
DECLARE cur CURSOR FOR SELECT id, column_name FROM table_name;
DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE;
OPEN cur;
read_loop: LOOP
FETCH cur INTO record_id, content_text;
IF done THEN
LEAVE read_loop;
END IF;