MySQL MATCH AGAINST 不起作用

2024-01-07

我实际上正在开发一个网站,其中有两个几乎相同的表,其中 MATCH AGAINST 在一个表上有效,但在另一个表上无效。为了找出为什么我试图将其简化为一个简单的问题,“让我们制作一个简单的表格” - 但事实并非如此。

我正在使用 phpMyAdmin 进行测试,这是 MySQL 5.1.41。

我构建的测试使用以下内容来定义表......

CREATE TABLE IF NOT EXISTS `test` (
  `id` int(11) NOT NULL,
  `title` text NOT NULL,
  `body` text NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;

ALTER TABLE `test` ADD FULLTEXT (`title`, `body`);

当我执行 SHOW INDEX FROM 测试时,我看到有一个包含标题和正文的 FULLTEXT 键。

我插入几行

INSERT INTO `test` (`id`, `title`, `body`) VALUES 
('1', 'Lorem Ipsum', 'Lorem ipsum dolor sit amet, consectetur ... lacus porta euismod.'), 
('2', 'Lorem Ipsum (cont)', 'Nunc leo massa, vulputate ... euismod fringilla.');

(为简洁起见,删除了一些正文内容)

然后当我跑步时

SELECT * FROM `test` WHERE MATCH (`title`, `body`) AGAINST ('consectetur');

我得到一个空结果集 - 没有找到行,但如果我运行

SELECT * FROM `test` WHERE `body` LIKE '%consectetur%';

然后找到一条记录。

虽然我有很多使用 MySQL 的经验,但这是我第一次使用 MATCH,所以我是不是做了一些愚蠢的事情?为什么这不起作用?是否需要构建索引(我已经对表进行了修复)或者这一切都应该自动发生?

仅供参考,有效的表定义为

CREATE TABLE IF NOT EXISTS `web_pages1` (
  `id` int(11) NOT NULL,
  `title` varchar(255) DEFAULT NULL,
  `slug` varchar(255) DEFAULT NULL,
  `meta_keywords` text,
  `meta_description` text,
  `snippet` text,
  `body` mediumtext,
  `created_by` int(11) DEFAULT NULL,
  `date_created` datetime DEFAULT NULL,
  `date_published` date DEFAULT NULL,
  `author` varchar(255) DEFAULT NULL,
  `edited_by` int(11) DEFAULT NULL,
  `date_edited` datetime DEFAULT NULL,
  `status` tinyint(4) NOT NULL DEFAULT '1',
  `parent_id` tinyint(11) DEFAULT NULL,
  `menu_id` int(11) DEFAULT NULL,
  `short_name` varchar(255) DEFAULT NULL,
  `sort_order` int(11) DEFAULT NULL,
  PRIMARY KEY (`id`),
  FULLTEXT KEY `search` (`title`,`slug`,`meta_keywords`,`meta_description`,`snippet`,`body`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;

给我带来麻烦并让我走上这条路的是

CREATE TABLE IF NOT EXISTS `web_news1` (
  `id` int(11) NOT NULL,
  `title` varchar(255) NOT NULL,
  `slug` varchar(255) NOT NULL,
  `meta_keywords` text,
  `meta_description` text,
  `snippet` text NOT NULL,
  `body` text NOT NULL,
  `created_by` int(11) NOT NULL,
  `date_created` datetime NOT NULL,
  `date_published` date DEFAULT NULL,
  `author` varchar(255) DEFAULT NULL,
  `edited_by` int(11) DEFAULT NULL,
  `date_edited` datetime DEFAULT NULL,
  `status` tinyint(4) DEFAULT '0',
  PRIMARY KEY (`id`),
  FULLTEXT KEY `search` (`title`,`slug`,`meta_keywords`,`meta_description`,`snippet`,`body`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

尽管我尝试像第一个一样定义第二个,但它仍然不起作用。


你需要添加IN BOOLEAN MODE在最后

SELECT * FROM `test` WHERE MATCH (title, body) AGAINST ('Ipsum' IN BOOLEAN MODE);

请看这里:

http://www.sqlfiddle.com/#!2/1b80b/2 http://www.sqlfiddle.com/#!2/1b80b/2

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

MySQL MATCH AGAINST 不起作用 的相关文章

随机推荐

  • 我在哪里可以找到(并运行)使用 cabal 沙箱编译的可执行文件?

    我正在编译我的myProgram lhs使用阴谋集团沙箱 设置为cabal sandbox init 我正在使用我想出的最简单的方法 cabal exec ghc myProgram 或者 有一个规则Makefile cabal exec
  • libgdx 游戏无法在 Android 手机上运行

    我正在尝试从这个基于 libgdx 的游戏构建 Android 游戏 但是当将我下载的 libgdx 代码移植到 Android 游戏时 Android 应用程序会崩溃http rengelbert com blog downloads f
  • Java套接字不会在死套接字上抛出异常?

    我们的移动设备和服务器之间有一个简单的客户端服务器架构 两者都是用 Java 编写的 一个极其简单的ServerSocket和Socket实现 然而一个问题是 当客户端突然终止 没有正确关闭套接字 时 服务器不知道它已断开连接 此外 服务器
  • 大方形 WordPress 帖子缩略图

    有人知道如何获得方形的 WordPress 缩略图吗 如果我使用这个图像不是方形的 但如果我这样做 它们是正方形的 我需要创建一个缩略图库 其中包含 300 x 300 的方形图像 您必须首先创建自己的图片尺寸 这是通过添加图像大小 htt
  • 当激活默认拒绝时,Spring Security ROLE_ANONYMOUS 不起作用

    我启用了安全性的默认拒绝功能 有了这个 我想在某些控制器上提供匿名访问 为此 我启用了匿名身份验证 如果我使用antmacher permitAll 工作正常 但如果我正在使用 PreAuthorize value hasRole ROLE
  • 如何在 CALayer 上获取触摸事件?

    我是 iPhone SDK 的新手 现在我正在使用我非常喜欢的 CALayers 进行编程 不像 UIViews 那么昂贵 并且比 OpenGL ES sprites 的代码少得多 我有这个问题 是否可以在 CALayer 上获取触摸事件
  • 如何在VS 2010中禁用缩进虚线

    在每个缩进上看到这些虚线 我该如何关闭它 我一定是不小心按下了某个键盘快捷键 但我在设置中找不到它 抱歉 这是一个非常愚蠢的问题 但这些话真的让我很困扰 我不知道还能转向哪里 通过以下方式打开 关闭它 编辑 gt 高级 gt 查看空白 Th
  • Ruby 中对数组中的集合进行平均的最佳方法是什么?

    给定以下简单数据集 对 0 25 53 和 80 组的值进行平均的最佳方法是什么 0 148 5 0 146 5 0 148 6 0 202 3 25 145 7 25 145 5 25 147 4 25 147 3 53 150 4 53
  • 有哪些大型网站正在使用 Amazon EC2 [关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 我正在寻找托管在 Amazon EC2 S3 Cloudfront 等上的大型网站的示例 我在一家公司工作 我们运行一个网站 该网站每月在运行 10
  • Delphi中如何检测打印机型号?

    当我插入 HP Laserjet 3015 时 Windows 会检测到正确的型号 然后尝试安装适当的驱动程序 如何检测所连接打印机的型号 我不想使用已安装打印机的列表 因为 Zebra 打印机可以使用通用 纯文本驱动程序进行安装 我是一名
  • OAuth (Instagram) 无需刷新

    我有一个单页 JavaScript 应用程序 我想知道是否可以在不刷新页面的情况下对 Instagram 上的用户进行身份验证 我想尝试使用 javascript 执行类似于 Facebook 连接的操作 其中 Facebook 对话框在弹
  • 为什么编译器需要.java后缀而解释器不需要.class后缀?

    编译 Foo java javac Foo java 运行程序 java Foo 为什么编译器需要 java后缀但解释器不需要 class suffix 正如其他几个答案所解释的那样 Java 编译器采用文件名作为参数 而解释器采用类名 所
  • Android 操作栏向上导航按钮在设备上不起作用

    Action Bar up navigation button works fine in emulator but does not work in device can any one help me out 主要活动 Override
  • 从android中的服务调用BroadCastReceiver来更新Fragment中的UI?

    我想更新UI of a fragment from service 我在用GCM用于发送消息 我有这个课程GCM public class GcmIntentService extends IntentService public GcmI
  • 来自阻塞(具有重叠 I/O 属性)Winsock2 调用的意外 WSA_IO_PENDING

    简洁版本 使用阻塞套接字 API 调用时 我收到 WSA IO PENDING 我该如何处理 插座有重叠 I O 属性 https support microsoft com en gb help 181611 socket overlap
  • qtcreator 在“停止”时发送的信号

    我正在 Linux 上工作 当我使用 Qt 创建者 IDE 上的 停止 按钮关闭应用程序时 我意识到我的应用程序留下了守护进程 我想处理这些情况 以便应用程序以与关闭主窗口相同的方式关闭 要编写处理程序 我需要知道它对应于哪些信号 深入研究
  • 使用 rowindex 从 JTable 检索行数据

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 如何从 a 中检索行数据JTable
  • Jetpack Compose 应用程序无法在 AVD 上启动

    我已经使用编写了一个示例Jetpack Compose然后每当我尝试Install它在一个AVD gradle 构建Project成功 但内置应用程序未启动 关于工具和代码的一切都很好 甚至Preview shows UI好吧 如果我自己手
  • 使用ajax保存wordpress设置api选项,

    我已经和这个问题斗争了一段时间了 我有一个主题的选项页面 并注册了一个选项 我一直试图在每次用户按下保存按钮时通过ajax更新选项 这是我的代码 JS function save main options ajax main options
  • MySQL MATCH AGAINST 不起作用

    我实际上正在开发一个网站 其中有两个几乎相同的表 其中 MATCH AGAINST 在一个表上有效 但在另一个表上无效 为了找出为什么我试图将其简化为一个简单的问题 让我们制作一个简单的表格 但事实并非如此 我正在使用 phpMyAdmin