1

我已按照本教程进行 mysql 全文搜索。

我有这张桌子:

CREATE TABLE IF NOT EXISTS `test` (
  `id` int(20) NOT NULL AUTO_INCREMENT,
  `textrow` varchar(256) NOT NULL,
  PRIMARY KEY (`id`),
  FULLTEXT KEY `textrow` (`textrow`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 AUTO_INCREMENT=3 ;

INSERT INTO `test` (`id`, `textrow`) VALUES
(1, 'Agajan Torayev'),
(2, 'torayeff');

ALTER TABLE test ADD FULLTEXT(textrow);

这些查询之间有什么区别(一个给出零结果):

mysql> SELECT * FROM test WHERE MATCH(textrow) AGAINST('agajan');
Empty set (0.00 sec)

mysql> SELECT *, MATCH(textrow) AGAINST('agajan') FROM test;
+----+----------------+----------------------------------+
| id | textrow        | MATCH(textrow) AGAINST('agajan') |
+----+----------------+----------------------------------+
|  1 | Agajan Torayev |                                0 |
|  2 | torayeff       |                                0 |
+----+----------------+----------------------------------+
2 rows in set (0.00 sec)
4

1 回答 1

1

不同之处在于,在第一个查询中,您使用matching 数据过滤结果,而在第二个查询中,您输出所有记录并添加一列以显示matching 的结果。

你没有得到结果,因为

自然语言搜索将搜索字符串解释为自然人类语言中的短语(自由文本中的短语)。[...] 此外,出现在 50% 或更多行中的单词被认为是常见的并且不匹配

取自 MySQL 全文搜索函数

于 2013-03-31T11:48:18.347 回答