您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

如何在部分单词匹配的情况下进行多列mysql全文搜索

如何在部分单词匹配的情况下进行多列mysql全文搜索

在布尔模式下,需要使用字符串(而不是得分更高),使用来完成+。前缀匹配以结尾结尾*。这似乎是您想要的,因此搜索

+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不同的值。

MySQL 2022/1/1 18:48:31 有337人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶