这是我的第一篇文章,虽然我在常规基础上阅读你的帖子。
我面临的问题与我的桌子上的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索引工作正常。有什么想法导致这个问题吗?
谢谢你的时间!
答案 0 :(得分:0)
您正在进行所谓的自然语言搜索。在这种类型的搜索中,50%或更多行中的任何单词都将被忽略为“公共值”。 Reference
如果该限制不是您想要的,那么您需要进行boolean full-text搜索,如下所示:
SELECT author,title FROM dost WHERE MATCH(author) AGAINST('+Dostoyevsky' IN BOOLEAN MODE);