全文索引无法正常工作

时间:2013-11-07 19:27:20

标签: mysql full-text-search

这是我的第一篇文章,虽然我在常规基础上阅读你的帖子。

我面临的问题与我的桌子上的FULLTEXT索引有关。你可以看到我在下面的程序:

CREATE TABLE dost(
  author VARCHAR(30),
  title VARCHAR(40),
  isbn SMALLINT NOT NULL)ENGINE MyISAM;

ALTER TABLE dost ADD FULLTEXT(author);

ALTER TABLE dost ADD FULLTEXT(author);

ALTER TABLE dost ADD FULLTEXT(author);

在我将一些数据插入表格之后,它看起来像这样:

author                 title                               isbn

Fyodor Dostoyevsky     Poor Folk                           225125
Fyodor Dostoyevsky     Crime and Punishment                121320
Fyodor Dostoyevsky     The Gambler                         124239
Rowan Williams         Dostoyevsky                         083409
Joseph Frank           Dostoyevsky: A Writer In His Time   089823

当我尝试对作者列使用MATCH AGAINST命令时,会出现问题。 更具体地说,当我输入

SELECT author,title FROM dost WHERE MATCH(author) AGAINST('Williams');

我得到了预期的结果(Rowan Williams Dostoyevsky)但是当我按照相同的程序将AGAINST输入从'Williams'更改为'Dostoyevsky'时,它会输出一个空集。另一方面,标题列上的FULLTEXT索引工作正常。有什么想法导致这个问题吗?

谢谢你的时间!

1 个答案:

答案 0 :(得分:0)

您正在进行所谓的自然语言搜索。在这种类型的搜索中,50%或更多行中的任何单词都将被忽略为“公共值”。 Reference

如果该限制不是您想要的,那么您需要进行boolean full-text搜索,如下所示:

SELECT author,title FROM dost WHERE MATCH(author) AGAINST('+Dostoyevsky' IN BOOLEAN MODE);