针对搜索改进Mysql匹配

针对搜索改进Mysql匹配,mysql,Mysql,我一直在关注Mysql与搜索的比赛。结果很奇怪。例如,如果我有一个表属性,其条目为“education”,并对“edu”进行搜索(使用匹配),那么它会找到它。但如果我搜索“educ”,则不会返回任何结果。一直到“教育”都不会有结果。所以它只匹配整个单词,或者如果一个单词中有3个或更少的字母匹配 有没有办法改进它,以便在搜索词是属性中单词的子集时返回结果?例如,使用上述示例,搜索“Education”将返回包含“Education”的行。通过在布尔模式下匹配,并使用*运算符,您可以完全执行所需操作

我一直在关注Mysql与搜索的比赛。结果很奇怪。例如,如果我有一个表属性,其条目为“education”,并对“edu”进行搜索(使用匹配),那么它会找到它。但如果我搜索“educ”,则不会返回任何结果。一直到“教育”都不会有结果。所以它只匹配整个单词,或者如果一个单词中有3个或更少的字母匹配


有没有办法改进它,以便在搜索词是属性中单词的子集时返回结果?例如,使用上述示例,搜索“Education”将返回包含“Education”的行。

通过在布尔模式下匹配
,并使用
*
运算符,您可以完全执行所需操作

例如:

 ... MATCH(thing) AGAINST ('+educat*' IN BOOLEAN MODE)...
+
告诉匹配只包括包含匹配项的
thing
的值,在本例中,这些值都是以“
educate
开头的索引值”(有关布尔模式如何工作的详细信息,请参阅)

顺便说一句,MySQL中的全文搜索在默认情况下不会索引3个或更少字符的单词,因此我怀疑您与“edu”的匹配没有按照您的想法进行。查看您的
ft\u min\u word\u len
变量的值,查看是否存在这种情况。

您可以使用标记%a(a=您的单词或字母)搜索以相同单词或字母开头的任何单词 可以使用%一%搜索单词的起始部分和/或中间部分。 最后一个你可以用一个以单词或字母结尾的%