MySQL模糊搜索方法介绍

在网上查了一下,有两种方法,土壤的第一种方法:使用类似的语句的二哥Kikunami说的全文索引,在网上搜索:如何在MySQL的搜索结果变得更好

许多因特网应用程序提供全文检索功能。用户可以使用一个词或词片段作为查询项来查找匹配记录。在后台,这些程序在SELECT查询中使用类似语句来执行此类查询。虽然这种方法是可行的,但是对于全文搜索,它是一种非常低效的方法,特别是在处理大量数据时。

MySQL这个问题基于内置全文本搜索的方法提供了一种解决方案。在这里,开发者只需要了解的领域,然后使用MySQL的方法在特殊的搜索操作的领域,这不仅提高了性能和效率(因为MySQL,这些领域做优化搜索指数),并实现更高质量的使用自然语言智能的评定结果的MySQL数据库的搜索,删除不相关的项目。
本文将告诉您如何在MySQL中进行全文搜索。

在数据库查询中,有一个完整的查询和一个模糊查询。
从字段中选择字段字段的字段
在条件方面,SQL提供了四种匹配模式:
1,%:表示任何0个或更多字符。可以匹配任何类型和长度的字符,在某些情况下,如果中文,请使用百分之二(%)说。
例如,从用户那里u_name { }如*三%选择。
将三的u_name张茂三,三藏三条腿,等记录和发现。
此外,如果你需要找到u_name记录三和猫,使用条件
SELECT * FROM { },u_name用户喜欢和u_name喜欢猫三% %。
如果选择从{ },u_name用户像使用猫%×3%。
虽然搜索搜索三条腿,但是与张茂三的情况。
2、_说:任何单一字符。单个任意字符匹配,这通常是用来限制表达式的字符长度表:
例如,从用户那里u_name * { }像'_三_选择'
才发现,u_name是中间的三藏字和字三;
For example, SELECT * FROM {user} WHERE u_name LIKE 'three __';
才发现,名字是三个字,第一个字是三个三脚猫;
3,{ }:括号中列出的字符之一(类似于正则表达式)。指定一个字符、字符串或范围,要求匹配的对象为它们中的任意一个。
例如,从用户那里u_name } {如张黎王三选择}
张三,李三,王三(而不是张黎王三)将被发现。
如果有一系列字符} {(01234,ABCDE,等等)可以略写为0-4,A-E
SELECT * FROM { },用户u_name喜欢'老{ 1-9 }
将找出旧的1,旧的2,…旧的9;
4 }:不在括号内的单个字符中列出。值和相同的{ }但它需要匹配指定字符以外的任何字符的对象。
例如,用户在选择{ } u_name *像{三} ^国王张黎
找不到张、李、王朝三、孙三;
SELECT * FROM { },用户u_name喜欢'老{ }^ 1-4;
将旧的1排除到旧的4,寻找旧的5,旧的6,…
5、当查询内容包含通配符
由于我们查询通配符,特殊字符和_ % {语句不能正常,用{}正常查询特殊字符。所以我们写了以下功能:
功能sqlencode(STR)
替换
STR =取代(STR,_
替换(STR,%
sqlencode = str
端功能
在查询字符串之前要检查功能,治疗后可以。

1。设置基本表
从示例表的创建开始,使用下面的SQL命令:
MySQL >创建表的评论(ID int(5)主键不为空auto_increment,数据);
上面的命令创建一个简单的音乐收集数据库(主要是整个文本),然后将一些记录添加到表中:
插入评论(id,数据)值
(1,'gingerboy有新单曲叫做扔石头。太棒了!);
插入评论(id,数据)值
(2,你好,我真的很喜欢Madonna的新单。
目前最热门的赛道之一…我一直在听);
插入评论(id,数据)
值(3,你听说了新乐队比地狱
他们有五个成员,他们在玩的时候烧掉他们的乐器。
这些家伙完全摇滚!像,真棒,花花公子!;
验证数据的正确输入:
从评论中选择*;
+——+ -------------------------------------------- +
ID数据
+——+ -------------------------------------------- +
1有一个新的单称为gingerboy…

2大家好,我真的很喜欢新的形成…
3你听说新乐队比以前热吗…
+——+ -------------------------------------------- +
3行(0秒)
2。定义全文搜索字段
接下来,将要搜索的字段定义为全文搜索索引。
MySQL >修改表添加索引(数据)的评论;
查询OK,3行受影响(0.21秒)
记录:3个重复:0个警告:0
使用显示索引命令检查已添加的索引:
从评论中显示索引;
+ + + + --------- --------------- -------- ------ ------------ --------- + + +
表column_name填充空index_type评论
---------- + --------------- + -------- + + + + ------ ------------ ---------
评论ID无效的B树
回顾数据空是全文
+ + + + --------- --------------- -------- ------ ------------ --------- + + +
三.运行全文搜索
当您拥有数据和索引时,您可以使用MySQL的全文搜索。最简单的全文检索方法是选择匹配查询…反对声明。下面是一个简单的示例,您可以找到包含单个单词的记录:
MySQL >选择ID进行匹配(数据)对(孤独的);+——+
身份证件
+——+


+——+
2行(0秒)
在这里,匹配()将比较转移到其字段的文本作为传递给()的参数的参数。如果有一个匹配,它将以正常的方式返回。注意,你可以使用一个逗号来分割字段列表。
当MySQL收到一个全文搜索请求时,它在内部记录每个记录,而不匹配的记录的分数为零,而更相关的记录将比不相关的记录获得更高的分数。
要查看每个记录是如何得分的,只返回结果集的一部分,如下图所示:
MySQL >选择ID匹配(数据)对(摇滚的)的评论;

+——+ ------------------------------- +
ID匹配(数据)对(摇滚的)
+——+ ------------------------------- +

二十
三十一点三八六二五一四五三三八一五
+——+ ------------------------------- +
3行(0秒)
4。使用逻辑搜索修饰符(布尔搜索修饰符)
您还可以使用逻辑搜索修饰符进行更精确的搜索。这是通过在反语句中添加布尔模式修饰符来实现的。在下面的示例中,我们将发现包含单词单但没有Madonna的记录。
MySQL >选择ID进行匹配(数据)对(+单madonna'in);
+——+
身份证件
+——+

+——+
1行集(0秒)
此搜索功能通常用于搜索单词片段(而不是完整的单词),可以通过布尔模式语句中的*(星号)运算符实现。下面的示例演示如何查找包含热词的记录。
MySQL >选择ID进行匹配(数据)和(热*在布尔模式+——+);
身份证件
+——+


+——+
2行(0秒)
您还可以使用此方法查找至少传递的一个参数。下面的示例查找包含至少一个单词地狱和石头的记录。
MySQL >选择ID进行匹配(数据)对('hell rocks'in);
+——+
身份证件
+——+


+——+
3行(0秒)
上面的示例演示了比传统选择更有效的全文检索方式…喜欢的语句。当你需要写MySQL数据库的搜索界面,下一次,你可以试试这个方法。最后发现不是因为只有MyISAM引擎支持全文本索引,halo.ok,仍然使用像搜索。