मैं MySQL की FULLTEXT अनुक्रमणिका का उपयोग करके अपने PHP वेब ऐप के लिए खोज समर्थन जोड़ने का प्रयास कर रहा हूं।MySQL FULLTEXT काम नहीं कर रहा
मैंने एक टेस्ट टेबल बनाया (MyISAM प्रकार का उपयोग करके, एक टेक्स्ट फ़ील्ड a
के साथ) और कुछ नमूना डेटा दर्ज किया। हालांकि यह कोई भी रिटर्न
SELECT * FROM test WHERE MATCH(a) AGAINST('databases')
: अब अगर मैं कर रहा हूँ सही निम्न क्वेरी दोनों उन पंक्तियों को वापस करना चाहिए। मैंने थोड़ा सा शोध किया है और जहां तक मैं कह सकता हूं, मैं सब कुछ ठीक कर रहा हूं - तालिका एक माईसाम तालिका है, FULLTEXT अनुक्रमणिका सेट हैं। मैंने प्रॉम्प्ट से और phpMyAdmin से कोई भाग्य के साथ क्वेरी चलाने का प्रयास किया है। क्या मुझे कुछ महत्वपूर्ण याद आ रही है?
अद्यतन: ठीक है, जबकि कोड़ी के समाधान अपने परीक्षण के मामले में काम किया यह मेरा वास्तविक मेज पर काम करने के लिए प्रतीत होता है नहीं:
CREATE TABLE IF NOT EXISTS `uploads` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` text NOT NULL,
`size` int(11) NOT NULL,
`type` text NOT NULL,
`alias` text NOT NULL,
`md5sum` text NOT NULL,
`uploaded` datetime NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=6 ;
और डेटा मैं उपयोग कर रहा हूँ:
INSERT INTO `uploads` (`id`, `name`, `size`, `type`, `alias`, `md5sum`, `uploaded`) VALUES
(1, '04 Sickman.mp3', 5261182, 'audio/mp3', '1', 'df2eb6a360fbfa8e0c9893aadc2289de', '2009-07-14 16:08:02'),
(2, '07 Dirt.mp3', 5056435, 'audio/mp3', '2', 'edcb873a75c94b5d0368681e4bd9ca41', '2009-07-14 16:08:08'),
(3, 'header_bg2.png', 16765, 'image/png', '3', '5bc5cb5c45c7fa329dc881a8476a2af6', '2009-07-14 16:08:30'),
(4, 'page_top_right2.png', 5299, 'image/png', '4', '53ea39f826b7c7aeba11060c0d8f4e81', '2009-07-14 16:08:37'),
(5, 'todo.txt', 392, 'text/plain', '5', '7ee46db77d1b98b145c9a95444d8dc67', '2009-07-14 16:08:46');
क्वेरी मैं अब चल रहा हूँ है:
SELECT * FROM `uploads` WHERE MATCH(name) AGAINST ('header' IN BOOLEAN MODE)
जो पंक्ति 3, header_bg2.png वापस करना चाहिए। इसके बजाय मुझे एक और खाली परिणाम सेट मिलता है। बूलियन खोज के लिए मेरे विकल्प में नीचे हैं:
mysql> show variables like 'ft_%';
+--------------------------+----------------+
| Variable_name | Value |
+--------------------------+----------------+
| ft_boolean_syntax | + -><()~*:""&| |
| ft_max_word_len | 84 |
| ft_min_word_len | 4 |
| ft_query_expansion_limit | 20 |
| ft_stopword_file | (built-in) |
+--------------------------+----------------+
5 rows in set (0.02 sec)
"शीर्षक" शब्द लंबाई प्रतिबंध के भीतर है और मुझे शक है वह काम करना बंद शब्द (मुझे यकीन है कि कैसे सूची प्राप्त करने नहीं कर रहा हूँ) है। कोई विचार?
आप यहां https://dev.mysql.com/doc/refman/5 स्टॉपवर्ड सूची देख सकते हैं।5/en/fulltext-stopwords.html, innodb http://dev.mysql.com/doc/refman/5.7/en/innodb-ft-default-stopword-table.html के लिए या INFORMATION_SCHEMA.INNODB_FT_DEFAULT_STOPWORD से चुनें * चलाएं; –