gpt4 book ai didi

MySQL FULLTEXT 不工作

转载 作者:IT老高 更新时间:2023-10-28 23:45:36 25 4
gpt4 key购买 nike

我正在尝试使用 MySQL 的 FULLTEXT 索引为我的 PHP Web 应用程序添加搜索支持。

我创建了一个测试表(使用 MyISAM 类型,具有单个文本字段 a)并输入了一些示例数据。现在,如果我是对的,下面的查询应该返回这两行:

SELECT * FROM test WHERE MATCH(a) AGAINST('databases')

但是它没有返回。我做了一些研究,据我所知,我做的一切都是正确的——该表是一个 MyISAM 表,已设置 FULLTEXT 索引。我尝试从提示符和 phpMyAdmin 运行查询,但没有成功。我错过了什么重要的东西吗?


更新:好的,虽然 Cody 的解决方案在我的测试用例中有效,但它似乎不适用于我的实际表:

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。相反,我得到另一个空结果集。我的 bool 搜索选项如下:

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)

“header”在字长限制之内,我怀疑它是一个停用词(我不确定如何获取列表)。有什么想法吗?

最佳答案

添加更多数据。默认情况下,MySQL 将忽略表中 50% 或更多行中的任何单词,因为它认为这是一个“噪音”单词。

由于表中的行数很少,通常会经常达到 50% 的限制(即,如果您有两行,则每个单词都在至少 50% 的行中!)。

关于MySQL FULLTEXT 不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1125678/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com