在布尔模式下,需要使用字符串(而不是得分更高),使用来完成+
。前缀匹配以结尾结尾*
。这似乎是您想要的,因此搜索:
+John* +S*
+John* +Smith*
+Smith* +J*
+Jo* +S*
请注意,全文索引无法帮助您搜索“单词中的任何地方”。所以类似*mith*
的注定会失败:它们是要与索引中的字符1匹配的。
如果您还想按匹配值对它们进行排序,例如,需要John Smith
before Johnny Smithson
,则可以这样做:
SELECT * FROM user
WHERE MATCH(..fields..) AGAINST ('match' IN BOOLEAN MODE)
ORDER BY MATCH(..fields..) AGAINST ('match' IN BOOLEAN MODE) DESC;
除非ft_min_word_len
再次单独添加所有单词> = ,否则您将看到的内容将无济于事:
+John* +S* John
+John* +Smith* John Smith
+Smith* +J* Smith
+Jo* +S*
对于最后一个,两个都是<默认的4个字符,因此我们不能在默认的MysqL中为其添加排序参数,但是可以设置ft_min_world_len
不同的值。