当前位置: 奥门金沙手机娱乐网址 > 数据库 > 正文

奥门金沙手机娱乐网址:搜索之简单应用

时间:2019-10-09 07:40来源:数据库
在给二个表增多字段的时候,猛然开采会报一个date类型的字段的暗许值错误,忧愁~ 什么在MySQL中拿走更加好的全文字笔迹核查索结果   作者: Techrepublic.com.com  2006-04-03 11:14:53  透过

在给二个表增多字段的时候,猛然开采会报一个date类型的字段的暗许值错误,忧愁~

什么在MySQL中拿走更加好的全文字笔迹核查索结果  
作者: Techrepublic.com.com 
2006-04-03 11:14:53 

透过排查,原本是MySQL的布署难点,在wamp下,MySQL 5.7里是没有安装 SQL_MODE 的。

繁多互连网应用程序都提供了全文字笔迹核查索功用,客商能够采用二个词或然词语片断作为查询项目来定位相配的记录。在后台,那一个程序接纳在一个SELECT查询中的LIKE语句来推行这种查询,尽管这种方法有效,但对此全文字笔迹核查索来讲,那是一种作用极端低下的主意,特别在管理大批量数指标时候。

1.my.ini文本中找到 [奥门金沙手机娱乐网址,mysqld]

MySQL针对这一难点提供了一种基于内建的全文字笔迹核查索方法的实施方案。在此,开辟者只须要轻易地方统一标准记出要求全文字笔迹核准索的字段,然后选拔特殊的MySQL方法在这几个字段运转搜索,这不光进步了品质和频率(因为MySQL对那个字段做了索引来优化找寻),并且达成了越来越高水平的搜寻,因为MySQL使用自然语言来智能地对结果评级,以去掉不相干的项目。

2.举个例子没有SQL_MODE,就增加,有就修改一下

那篇文章将向您呈报在MySQL中怎么着进行全文字笔迹核查索。

sql_mode="STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION"

1、设置基本表格

3.重启MySQL;

从创立例子表格开首,使用以下的SQL命令:

mysql> CREATE TABLE reviews (id INT(5) PRIMARY KEY NOT NULL AUTO_INCREMENT, data TEXT);

以上命令创造了三个粗略的音乐专融资料库(首假若整段的文字),然后向这一个表格中增多一些记下:

mysql> INSERT INTO `reviews` (`id`, `data`) VALUES

(1, 'Gingerboy has a new single out called Throwing Rocks. It's great!');

mysql> INSERT INTO `reviews` (`id`, `data`) VALUES 

(2, 'Hello all, I really like the new Madonna single. 

One of the hottest tracks currently playing...I've been listening to it all day');

mysql> INSERT INTO `reviews` (`id`, `data`)

VALUES (3, 'Have you heard the new band Hotter Than Hell?

They have five members and they burn their instruments when they play in concerts. 

These guys totally rock! Like, awesome, dude!');

表达数据的不易录入:

mysql> SELECT * FROM reviews;

+----+--------------------------------------------+

| id | data                                       |

+----+--------------------------------------------+

|  1 | Gingerboy has a new single out called ...  |

|  2 | Hello all, I really like the new Madon ... |

|  3 | Have you heard the new band Hotter Than... |

+----+--------------------------------------------+

3 rows in set (0.00 sec)

2、定义全文字笔迹查验索字段

接下去,定义您要作为全文找出索引的字段

mysql> ALTER TABLE reviews ADD FULLTEXT INDEX (data);

Query OK, 3 rows affected (0.21 sec)

Records: 3  Duplicates: 0  Warnings: 0

应用SHOW INDEXES命令来检查索引已经被增添了:

mysql> SHOW INDEXES FROM reviews;

+---------+---------------+--------+------+------------+---------+

| Table   | Column_name   | Packed | Null | Index_type | Comment |

----------+---------------+--------+------+------------+---------+

| reviews |  id           | NULL   |      | BTREE      |         |

| reviews |  data         | NULL   | YES  | FULLTEXT   |         |

+---------+---------------+--------+------+------------+---------+

2 rows in set (0.01 sec)

3、运转全文检索

当您抱有了数码和目录,就能够接纳MySQL的全文字笔迹核实索了,最简易的全文字笔迹核查索格局是带有MATCH...AGAINST语句的SELECT查询,以下是一个归纳的例子,能够来寻找含有单词“single”的笔录:

mysql> SELECT id FROM reviews WHERE MATCH (data) AGAINST ('single');+----+

| id |

+----+

|  1 |

|  2 |

+----+

2 rows in set (0.00 sec)

在此,MATCH()将作为参数字传送递给它的字段中的文字与传递给AGAINST()的参数举办比较,固然有同盟的,那就根据正规的章程赶回。注意你能够传递不仅仅二个字段用MATCH()来查看­-只需用逗号来划分字段列表。

当MySQL收到了一个全文字笔迹核算索的伸手,它就在内部对各个记录进行评分,不相配的记录得分为零,而“更相关”的记录会拿到比“不太相关”的笔录相对更高的分数。相关性是由MySQL的一多元区分标准来支配的,查看MySQL的客户手册能够获得越来越多的新闻。

想看看各类记录的评分怎么着,只必要回到MATCH()方法作为结果集的一有个别,如下所示:

mysql> SELECT id, MATCH (data) AGAINST ('rock') FROM reviews;

+----+-------------------------------+

| id | MATCH (data) AGAINST ('rock') |

+----+-------------------------------+

|  1 |                             0 |

|  2 |                             0 |

|  3 |               1.3862514533815 |

+----+-------------------------------+

3 rows in set (0.00 sec)

4、使用逻辑寻找修饰符(Boolean search modifiers)

您还足以选拔逻辑寻觅修饰符来拓宽越来越纯粹的追寻,那通过在AGAINST语句中加多极度的IN BOOLEAN MODE修饰符来完成,在以下的例证中,将追寻含有单词“single”可是并未有“Madonna”的记录:

mysql> SELECT id FROM reviews WHERE MATCH (data) AGAINST ('+single -madonna' IN BOOLEAN MODE);

+----+

| id |

+----+

|  1 |

+----+

1 row in set (0.00 sec)

这一搜索天性寒时用于找出单词片断(实际不是完整的词语),那能够透过在IN BOOLEAN MODE语句中的*(星号)操作符来贯彻,以下的例证体现了哪些找出单词中蕴涵“hot”的笔录:

mysql> SELECT id FROM reviews WHERE MATCH (data) AGAINST ('hot*' IN BOOLEAN MODE);+----+

| id |

+----+

|  3 |

|  2 |

+----+

2 rows in set (0.00 sec)

你还足以选拔这种艺术来查找起码八个传递到AGAINST的参数中,以下的事例查找了起码含有单词“hell”和“rocks”中的多少个的记录:

mysql> SELECT id FROM reviews WHERE MATCH (data) AGAINST ('hell rocks' IN BOOLEAN MODE);

+----+

| id |

+----+

|  1 |

|  3 |

+----+

2 rows in set (0.00 sec)

上述的那一个事例演示了针锋相对于古板的SELECT...LIKE语句,进行全文字笔迹核准索的更实用的艺术,当你下贰次索要编写制定MySQL数据库找出分界面的时候,您可以尝试这一方法。

编辑:数据库 本文来源:奥门金沙手机娱乐网址:搜索之简单应用

关键词: