【发布时间】:2011-07-07 15:43:14
【问题描述】:
我有一张表格,我希望能够对其进行全文搜索,但我的搜索字词似乎没有得到任何点击。
这是我的表格的样子(我取出了一些我认为不重要的列):
mysql> SHOW TABLE STATUS LIKE 'transcripts'; +-------------+--------+---------+------------+--- ----------------+----------+----------------+ |姓名 |引擎 |版本 |行格式 |整理 |校验和 |创建选项 | +-------------+--------+---------+------------+--- ----------------+----------+----------------+ |成绩单| MyISAM | 10 |动态 | latin1_swedish_ci |空 | | +-------------+--------+---------+------------+--- ----------------+----------+----------------+ mysql> DESCRIBE 成绩单; +-------------+---------+------+-----+---------+- ---------------+ |领域 |类型 |空 |钥匙 |默认 |额外 | +-------------+---------+------+-----+---------+- ---------------+ |编号 |整数(11) |否 |优先级 |空 |自动增量 | |内容 |正文 |是 | |空 | | |原始内容 |正文 |是 |穆尔 |空 | | |磁带 ID |整数(11) |是 | |空 | | |状态 |整数(11) |是 | | 0 | | | created_at |日期时间 |是 | |空 | | |更新时间 |日期时间 |是 | |空 | | +-------------+----------+------+-----+---------+- ---------------+ mysql> 从成绩单中显示索引; +-------------+------------+---------+-- ------------+-------------+------------+----------- --+------------+--------+------+------------+ |表 |非唯一 |键名 | Seq_in_index |列名 |整理 |基数|子部分 |包装 |空 |索引类型 | +-------------+------------+---------+-- ------------+-------------+------------+----------- --+------------+--------+------+------------+ |成绩单| 0 |初级 | 1 |编号 |一个 | 2 |空 |空 | | BTREE | |成绩单| 1 |原始内容索引 | 1 |原始内容 |空 |空 |空 |空 |是 |全文 | +-------------+------------+---------+-- ------------+-------------+------------+----------- --+------------+--------+------+------------+
证明有一行可以找到:
mysql> SELECT id, raw_content FROM transcripts;
+----+-------------+
| id | raw_content |
+----+-------------+
| 1 | foo |
+----+-------------+
以下是我试图让搜索正常工作的尝试:
mysql> SELECT * FROM transcripts WHERE MATCH(raw_content) AGAINST ('foo');
Empty set (0.00 sec)
mysql> SELECT * FROM transcripts WHERE MATCH(raw_content) AGAINST ('foo' IN BOOLEAN MODE);
Empty set (0.00 sec)
mysql> SELECT id FROM transcripts WHERE MATCH(raw_content) AGAINST ('foo' IN NATURAL LANGUAGE MODE);
Empty set (0.00 sec)
mysql> SELECT * FROM transcripts WHERE MATCH(raw_content) AGAINST ('+foo*' IN BOOLEAN MODE);
Empty set (0.00 sec)
我做错了什么?
【问题讨论】:
-
默认全文忽略不超过 3 个字符的单词
-
呸,就是这样@Cfreak。您可以将其发布为答案吗?布尔模式搜索适用于较长的搜索。
-
请注意,如果您搜索的单词出现在至少 50% 的记录中,那么在没有布尔模式的情况下,它会被忽略。更多信息在这里dev.mysql.com/doc/refman/5.1/en/fulltext-fine-tuning.html问候;)
标签: mysql search full-text-search