lv包包、古奇女包、coach包:草、獭兔皮草、皮草服饰:,但是表的存储引擎类型必须为MyISAM,以下是建表SQL,注意其中显式设置了存储引擎类型CREATETABLEarticles(idINTUNSIGNEDAUTO_INCREMENTNOTNULLPRIMARYKEY,titleVARCHAR(200),bodyTEXT,FULLTEXT(title,body))ENGINE=MyISAMDEFAULTCHARSET=utf8;其中FULLTEXT(title,body)给title和body这两列建立全文索引,之后检索的时候注意必须同时指定这两列。(title,body)VALUES('MySQLTutorial','DBMSstandsforDataBase...'),('HowToUseMySQLWell','Afteryouwentthrougha...'),('OptimizingMySQL','Inthistutorialwewillshow...'),('1001MySQLTricks','....'),('','parison...'),('MySQLSecurity','Whenconfiguredproperly,MySQL...');*FROMarticlesWHEREMATCH(title,body)AGAINST('database');检索结果如下:...1MySQLTutorialDBMSstandsforDataBase...说明全文匹配时忽略大小写。,但是如果检索SQL改为下面会怎样呢?SELECT*FROMarticlesWHEREMATCH(title,body)AGAINST('well');结果让人大跌眼镜,开始我也困惑了许久,后来去网上查了下才知道原来是这么回事:mysql指定了最小字符长度,默认是4,必须要匹配大于4的才会有返回结果,可以用SHOWVARIABLESLIKE'ft_min_word_len'来查看指定的字符长度,,:ft_min_word_len=2,改完后重启mysql即可。所以上面不能返回结果。但是我用上面的方法改配置文件后,再用show命令查看,并没有改变。另外,MySQL还会计算一个词的权值,以决定是否出现在结果集中,具体如下:mysql在集和查询中的对每个合适的词都会先计算它们的权重,一个出现在多个文档中的词将有较低的权重(可能甚至有一个零权重),因为在这个特定的集中,它有较低的语义值。否lv包包、古奇女包、coach包:草、獭兔皮草、皮草服饰:则,如果词是较少的,它将得到一个较高的权重,mysql默认的阀值是50%,上面‘you’在每个文档都出现,因此是100%,只有低于50%的才会出现在结果集中。但是如果不考虑权重,那么该怎么办呢?MySQL提供了布尔全文检索(BOOLEANFULLTEXTSEARC
MySQL全文检索 来自淘豆网m.daumloan.com转载请标明出处.