2

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

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

4

2 回答 2

0

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

于 2012-11-12T16:32:52.683 回答
0

IN BOOLEAN MODE通过匹配和使用运算符,您可以完全按照您的意愿行事*

例如:

 ... MATCH(thing) AGAINST ('+educat*' IN BOOLEAN MODE)...

+告诉匹配只包括那些包含匹配项的值,thing在这种情况下,它是所有以“”开头的索引值educat(有关布尔模式如何工作的详细信息,请参见此处)。

顺便说一句,默认情况下,MySQL 中的全文搜索不会索引 3 个或更少字符的单词,所以我怀疑您与“edu”的匹配没有按照您的想法工作。查看ft_min_word_len变量的值,看看是否是这种情况。

于 2012-11-12T16:32:08.243 回答