SELECT * FROM documents WHERE text LIKE '%performance optimization%';
SELECT * FROM documents WHERE MATCH(text) AGAINST('performance optimization');
SET GLOBAL innodb_ft_server_stopword_table = 'database/custom_stopwords';
SET GLOBAL innodb_ft_enable_stopword = OFF;
CREATE TABLE cooking_recipes (
recipe_id INT PRIMARY KEY AUTO_INCREMENT,
chef_name VARCHAR(100),
recipe_name VARCHAR(200),
ingredients TEXT,
preparation_steps TEXT,
cuisine_type VARCHAR(50),
difficulty_level ENUM('Beginner', 'Intermediate', 'Advanced', 'Professional'),
cooking_time INT COMMENT 'In minutes',
calories_per_serving INT,
-- Full-text indices for different search use cases
FULLTEXT INDEX ft_recipe_search (recipe_name, ingredients),
FULLTEXT INDEX ft_preparation (preparation_steps),
FULLTEXT INDEX ft_chef_cuisine (chef_name, cuisine_type)
) ENGINE=InnoDB;
ALTER TABLE knowledge_base
ADD FULLTEXT INDEX ft_main_content (main_content);
CREATE FULLTEXT INDEX ft_main_content ON knowledge_base (main_content);
SELECT entry_id, subject_line,
MATCH(subject_line, main_content) AGAINST('mysql optimization') AS relevance_score
FROM knowledge_base
WHERE MATCH(subject_line, main_content) AGAINST('mysql optimization')
ORDER BY relevance_score DESC
LIMIT 15;
SELECT entry_id, subject_line
FROM knowledge_base
WHERE MATCH(subject_line, main_content)
AGAINST('+mysql +optimization -cloud' IN BOOLEAN MODE)
LIMIT 20;
SELECT entry_id, subject_line
FROM knowledge_base
WHERE MATCH(subject_line)
AGAINST('+database' IN BOOLEAN MODE)
LIMIT 25;
SELECT entry_id, subject_line
FROM knowledge_base
WHERE MATCH(subject_line, main_content)
AGAINST('optim*' IN BOOLEAN MODE)
LIMIT 30;
SELECT entry_id, subject_line
FROM knowledge_base
WHERE MATCH(subject_line, main_content)
AGAINST('"mysql performance enhancement"' IN BOOLEAN MODE)
LIMIT 10;
SELECT entry_id, subject_line
FROM knowledge_base
WHERE MATCH(subject_line, main_content)
AGAINST('database indexing' WITH QUERY EXPANSION)
LIMIT 25;
innodb_ft_min_token_size=2
ALTER TABLE articles DROP INDEX ft_content;
ALTER TABLE articles ADD FULLTEXT INDEX ft_content (content);
SELECT * FROM INFORMATION_SCHEMA.INNODB_FT_DEFAULT_STOPWORD;
SHOW INDEX FROM knowledge_base WHERE Key_name LIKE 'ft%';
SELECT entry_id, subject_line,
MATCH(main_content) AGAINST('sample query') AS ranking_value
FROM knowledge_base
ORDER BY ranking_value DESC
LIMIT 20;
SELECT table_name, index_name, stat_value*@@innodb_page_size
FROM mysql.innodb_index_stats
WHERE stat_name='size' AND index_name LIKE 'ft%';