【澳门新萄京】【MySql】Mysql ELANDROSportage 1067: Invalid default value for ‘date’ 化解

【澳门新萄京】【MySql】Mysql ELANDROSportage 1067: Invalid default value for ‘date’ 化解

通过各种核实,原本是MySQL的计划难题,在wamp下,MySQL
5.7里是从未安装 SQL_MODE 的。

|  1 |                             0 |

◆ 步骤4 插入测量检验数据
INSERT INTO `zzx_articles` (title_fc,content_fc) VALUES
(‘MySQL Tutorial Linux red’,’DBMS stands for DataBase ok’),
(‘How To Use MySQL Well’,’After you went through blue’),
(‘Optimizing MySQL ok’,’In this tutorial we will optimizing’),
(‘MySQL vs this YourSQL blue red’,’1. Never run mysqld as root red’),
(‘MySQL Tricks blue’,’In the following database’),
(‘MySQL Security’,’When configured properly, MySQL’),
(‘中华’,’中国 ‘),
(‘中华情 和谐’,’上海 和谐’),
(‘污染之都’,’你好 笔者是 香水之都 人’),
(‘东方之珠精气神’,’修正 爱国 宽容 厚颜’)

sql_mode="STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION"

+—-+

         SELECT * FROM articles WHERE MATCH (title,content) AGAINST
(‘+apple -banana’ IN BOOLEAN MODE);
         + 表示AND,即必得带有。-
代表NOT,即必需不满含。即:再次来到记录供给包罗 apple,且无法包涵 banner。

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

完成后“重启 MySQL 服务”,并用 SHOW VARIABLES LIKE ‘ft_min_word_len’
查询下是不是获得了理当如此的结果值为2,如下图:
澳门新萄京 1

3.重启MySQL;

+—-+

       ● IN BOOLEAN MODE的特色: 
          ·不剔除百分之五十以上相符的row。 
          ·不自动以相关性反向排序。 
          ·能够对没有FULLTEXT index的字段举办查找,但会异常的慢。 
          ·限定最长与最短的字符串。 
          ·套用Stopwords。
 
       ● 找寻语准绳则:
         +   一定要有(不包括该重大词的多寡条均被忽视)。 
         –   不可能有(肃清钦命关键词,含有该重大词的均被忽视)。 
         >   进步该条相称数据的权重值。 
         <   减少该条匹配数据的权重值。
         ~   将其相关性由正转负,表示具备该字会下滑相关性(但不像 –
将之消亡),只是排在较后边权重值收缩。 
         *   万用字,不像其余语法放在眼下,那些要接在字符串前面。 
         ” ” 用双引号将朝气蓬勃段句子包起来表示要完全相符,不可拆字。

2.若是未有SQL_MODE,就拉长,有就修改一下

2 rows in set (0.00 sec)

  

   ▶ 实验11:同时对 title_fc 和 content_fc 两字段做全文字笔迹查验索

   SELECT *,MATCH (title_fc) AGAINST (‘optimizing ok red blue’) as
title_score,MATCH (content_fc) AGAINST (‘optimizing ok red blue’) as
content_score
   FROM zzx_articles 
   WHERE MATCH (title_fc,content_fc) AGAINST (‘optimizing ok red blue’
IN BOOLEAN MODE) order by title_score DESC,content_score DESC

   澳门新萄京 2

   总计:通超过实际验开采,又成功的取到了 content_fc
字段相称的权重值,排序格局是非常重要按title字段权重降序排序,次要按
content_fc 权重降序排序。
           此外笔者发掘 ok 这些关键词在对“title_fc
char(254)”字段相称时收获匹配值为2.1xxxxxxx,但对“content_fc
text”字段相称时权重值去为0,
          
那是MySQL对各法语单词权重值的给与有友好的算法,我们无权干预。所以当大家开掘成些单词的权重值为零竟然为负时,不用过于纠葛,
           因为MySQL有温馨的算法。

           关于排序,主要按 title_score 字段权重降序排序,次要按
content_score
权重降序排序,那样的排序准绳看起来更科学了,但本身想好好的检索引擎绝不至于简单如此吗,继续下边包车型地铁实行:

1.my.ini文件中找到 [mysqld]

+—-+——————————————–+

         SELECT * FROM articles WHERE MATCH (title,content) AGAINST
(‘+apple +(>banana <orange)’ IN BOOLEAN MODE);
         重回必需同一时间含有“apple banana”只怕必需同时富含“apple
orange”的记录。
         若同一时间含有“apple banana”和“apple orange”的笔录,则“apple
banana”的权重高于“apple orange”的权重。

在给三个表增多字段的时候,突然开采会报三个date类型的字段的暗许值错误,烦懑~

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

三、检索方式
     1、自然语言检索: IN NATURAL LANGUAGE MODE

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

  

    ▶ 实验14:优化实验13,可扶持更复杂的基准排序
       看三个SQL语句原型,CASE WHEN THEN END 结构:

          CASE <单值表明式>
              WHEN <表明式值> THEN <SQL语句也许重临值>
              WHEN <表明式值> THEN <SQL语句恐怕重回值>
               …
              WHEN <表达式值> THEN <SQL语句恐怕重返值>
              ELSE <SQL语句或许重返值>
          END

      
有一表查询:大于或等于80代表彰显为“优异”,大于或等于60展现为“及格”,小于60分突显为“不比格”。
       select (CASE WHEN 语文>=80 THEN ‘优秀’ WHEN 语文>=60 THEN
‘及格’ ELSE ‘不及格’ END) as 语文,
              (CASE WHEN 数学>=80 THEN ‘优秀’ WHEN 数学>=60 THEN
‘及格’ ELSE ‘不及格’ END) as 数学,
              (CASE WHEN 英语>=80 THEN ‘优秀’ WHEN 英语>=60 THEN
‘及格’ ELSE ‘不及格’ END) as 英语
       from table_name

       # 实例测量检验一下
       select *,(CASE WHEN id<8 THEN ‘5’ WHEN id=8 THEN ‘4’ ELSE ‘0’
END) as newfield
       from zzx_articles
       where id>5

       作者的新排序思路:假如 title_fc 和 content_fc
的权重值“同不常候大于0且相等”为关键排序,“相同的时候大于0且不等于”的为扶植排序,
       “title_fc 大于0的再一次要排序”,假诺用 IF()
貌似倒霉完成,看上面语句:

       SELECT *,MATCH (title_fc) AGAINST (‘optimizing ok red blue’) as
title_score,MATCH (content_fc) AGAINST (‘optimizing ok red blue’) as
content_score,
             (CASE WHEN MATCH (title_fc) AGAINST (‘optimizing ok red
blue’) > 0 AND MATCH (title_fc) AGAINST (‘optimizing ok red blue’) =
MATCH (content_fc) AGAINST (‘optimizing ok red blue’) THEN ‘3’ WHEN
MATCH (title_fc) AGAINST (‘optimizing ok red blue’) > 0 AND MATCH
(title_fc) AGAINST (‘optimizing ok red blue’) <> MATCH
(content_fc) AGAINST (‘optimizing ok red blue’) THEN ‘2’ WHEN MATCH
(title_fc) AGAINST (‘optimizing ok red blue’) > 0 THEN ‘1’ ELSE ‘0’
END) AS score1
       FROM zzx_articles 
       WHERE MATCH (title_fc,content_fc) AGAINST (‘optimizing ok red
blue’ IN BOOLEAN MODE) order by score1 DESC,title_score
DESC,content_score DESC

澳门新萄京 3

      
总括:本实验的排序未必相符科学,但引出一个更复杂法规的排序情势、角度,八种排序结合使用技能做出更客观的排序,工夫让你的查究引擎越发智能。一得之见,或然你有越来越好的排序,请也分享给自个儿。

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

一、概述
     
MySQL全文字笔迹核准索是采取查询关键字和查询列内容之间的相关度进行搜寻,能够利用全文索引来提升相配的快慢。

2、定义全文字笔迹核算索字段

     3、MATCH(title, content)里的字段必须和FULLTEXT(title,
content)里的字段一模二样。
          假诺少年老成旦单查title或content三个字段,那得此外再建八个FULLTEXT(title) 或
FULLTEXT(content),也因为这么,MATCH()的字段绝不可跨table,可是此外二种检索情势周边能够。
    
    
4、MySQL不帮衬汉语全文索引,原因比超级粗略:与匈牙利语分裂,普通话的文字是连着一块写的,中间没有MySQL能找到分词之处,甘休如今MySQL5.6本子是那般,不过有调换的点子,正是将整句的华语分词,并按urlencode、区位码、base64、拼音等举行编码使之以“字母+数字”的法子存储于数据库中。

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

# 如若前期须求添全文加索引能够用如下语句:
alter table `zzx_articles` add fulltext
zzx_title_fc(`title_fc`); 
alter table `zzx_articles` add fulltext
zzx_con_fc(`content_fc`); 
alter table `zzx_articles` add fulltext
zzx_title_con_fc(`title_fc`,`content_fc`);

|  3 |               1.3862514533815 |

  

   ▶ 实验12:进一层优化 排序准则

      
看一个SQL语句原型,查询“字段1,字段2”两字段,同有时间将每条数据的“字段1”与“字段2”的求和作为“字段3”字段:
       select 字段1,字段2,字段1 + 字段2 as 字段3
       from 表名
       where …..

   下面将 title_fc 和 content_fc 两权重值求和,归入新字段 score第11中学,并按 score1 主要排序,title_score 次之,content_score再次之:

   SELECT *,MATCH (title_fc) AGAINST (‘optimizing ok red blue’) as
title_score,MATCH (content_fc) AGAINST (‘optimizing ok red blue’) as
content_score,MATCH (title_fc) AGAINST (‘optimizing ok red blue’) +
MATCH (content_fc) AGAINST (‘optimizing ok red blue’) as score1
   FROM zzx_articles 
   WHERE MATCH (title_fc,content_fc) AGAINST (‘optimizing ok red blue’
IN BOOLEAN MODE) order by score1 DESC,title_score DESC,content_score
DESC

澳门新萄京 4

   总计:相对来说,倘使 title_fc 和 content_fc
都十三分上了,应赋予靠前的排行呢。所以首要按其 title_fc 和 content_fc
两权重值之和排行,
            次要再思谋 title_fc、content_fc 排序。

上述的这个事例演示了针锋相投于古板的SELECT…LIKE语句,进行全文字笔迹查证索的更管用的不二法门,当你下一回索要编制MySQL数据库找寻界面的时候,您能够尝尝这一艺术。

  

   ▶
实验10:在实验9的底工上,在select字段条件里扩大多少个red关键词,where里的机要词保持不改变(注意与试验1
实验9相比)。

   SELECT *,MATCH (title_fc) AGAINST (‘optimizing ok red red red’) as
title_score
   FROM zzx_articles 
   WHERE MATCH (title_fc) AGAINST (‘optimizing ok red blue’ IN BOOLEAN
MODE) order by title_score DESC

   澳门新萄京 5

   总括:发掘只要含有 red
关键词的数据的权重值都加多了,排序也发生了变动。
          
说明经过“提重”——重复数次或多或少入眼词权重值的措施可使部分数据权重值增添,进而影响排序。

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

     2、预设 MATCH…AGAINST 是以相关性排序,由高到低。

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

插入结果如下图:
澳门新萄京 6

+—-+

     2、布尔检索: IN BOOLEAN MODE
         
剔除百分之三十匹配行以上都有的词,比如说,每种行都有this这一个字的话,那用this去查时,会找不到别的结果,那在记录条数极度多时很有用,
         
原因是数据库以为把具备行都找寻来是一贯不意义的,这时候,this差少之甚少被作为是stopword(中断词);不过若唯有两行记录时,是吗鬼也查不出去的,
          因为每个字都现身一半(或上述卡塔 尔(英语:State of Qatar),要防止这种景色,请用IN BOOLEAN
MODE。

怎么着在MySQL中得到越来越好的全文字笔迹查验索结果  
作者: Techrepublic.com.com 
2006-04-03 11:14:53 

  

   ▶ 实验13:另叁个角度看排序
     看叁个SQL语句原型,假若性别字段值为“1”显示“男”不然显示“女”
     select *,IF(sex=1,”男”,”女”) as ssva from 表名 where id = 1

     作者的新排序思路:假使 title_fc 和 content_fc
同期宽容上的行做首要排序,然后对只相称上 title_fc
的做扶植排序,只相配上 content_fc 的重新要排序。
(对于实验5的排序不得法之处在于:倘诺有八个对content_fc关键词的相称权重极高,招致了求和后
score1
的值也高,但对title_fc的相称权重去为0,由于score1值高却排到了前头那不一定不利啊?)

   SELECT *,MATCH (title_fc) AGAINST (‘optimizing ok red blue’) as
title_score,MATCH (content_fc) AGAINST (‘optimizing ok red blue’) as
content_score,IF(MATCH (title_fc) AGAINST (‘optimizing ok red blue’)
> 0 AND MATCH (content_fc) AGAINST (‘optimizing ok red blue’) >
0,1,0) as score1
   FROM zzx_articles 
   WHERE MATCH (title_fc,content_fc) AGAINST (‘optimizing ok red blue’
IN BOOLEAN MODE) order by score1 DESC,title_score DESC,content_score
DESC

澳门新萄京 7

   总结:如果 title_fc 和 content_fc
都协作上了,做为优先排序理所必然,但也应酌量局地权重值过高的主题材料哦。

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

四、MySQL全文字笔迹核算索的规格节制
    
1、在MySQL5.6之下,只有MyISAM表支持全文检索。在MySQL5.6以上Innodb引擎表也提供支撑全文检索。
     2、相应字段创建FULLTEXT索引

你还是可以选拔这种方式来探索最少二个传递到AGAINST的参数中,以下的例证查找了最少含有单词“hell”和“rocks”中的多个的记录:

  

   ▶ 实验6:过滤条件:相称包罗单词“red”和“Linux” 的行,或带有“red”
和“blue”的行(无先后顺序)
                可是带有 “apple Linux”的行较包涵“apple
blue”的行有更加高的权重值。

   SELECT *,MATCH (title_fc) AGAINST (‘+red  +(>Linux <blue)’)
as title_score
   FROM zzx_articles 
   WHERE MATCH (title_fc) AGAINST (‘+red  +(>Linux <blue)’ IN
BOOLEAN MODE) order by title_score DESC

   澳门新萄京 8

  
—————————————————————————————————————————— 

   ▶ 实验7:过滤条件:相称关键词以 re 开始,或以 bl 先河的数据行

   SELECT *,MATCH (title_fc) AGAINST (‘re* bl*’) as title_score
   FROM zzx_articles 
   WHERE MATCH (title_fc) AGAINST (‘re* bl*’ IN BOOLEAN MODE) order
by title_score DESC

   澳门新萄京 9

   总结:注意 * 是写在前面哦,这时候也正是 like 模糊相称,未有权重值了

  
—————————————————————————————————————————— 

   ▶ 实验8:过滤条件:相称查找字符串“To Use MySQL”关键词

   SELECT *,MATCH (title_fc) AGAINST (‘”To Use MySQL”‘) as
title_score
   FROM zzx_articles 
   WHERE MATCH (title_fc) AGAINST (‘”To Use MySQL”‘ IN BOOLEAN MODE)
order by title_score DESC

   澳门新萄京 10

   总括:此时是把双引号内的的字符串看成一个关键词,若不用双引号则是将 To
Use MySQL 八个重要词去分别相配,两者有分别;

+—-+——————————————–+

六、总计事项
     1、预设搜寻是不分大小写,若要分大小写,columne 的 character
set要从utf8改成utf8_bin。

2 rows in set (0.00 sec)

  

   ▶ 实验4:过滤条件:必得带有”red”关键词,并且无法包括”blue”关键词

   SELECT *,MATCH (title_fc) AGAINST (‘optimizing ok red blue’) as
title_score
   FROM zzx_articles 
   WHERE MATCH (title_fc) AGAINST (‘optimizing ok +red -blue’ IN
BOOLEAN MODE) order by title_score DESC

   澳门新萄京 11

   总计:可以看到 + –
那八个标记是象征“并且(and)”的情趣,即:必需带有red关键词 and
不可能包蕴blue关键词。

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

◆ 步骤5 找出语法则则、排序 实验
   表明:相配语句 MATCH (col1,col2,…) AGAINST (expr
[search_modifier]) 相称成功后,会回来此条数据的权重值(权重值1 ≈
种种词的非凡结果权重值之和),大家运用此权重值“由高到低”排序可优化查询结果。

|  2 |                             0 |

七、实验部分

3 rows in set (0.00 sec)

    3、查询扩张检索: WITH QUE昂CoraY EXPANSION

| reviews |  id           | NULL   |      | BTREE      |         |

# 改善全文字笔迹查证索的最小许可字符为2个字符或汉字
ft_min_word_len = 2

3 rows in set (0.00 sec)

  

   ▶ 实验9:在实验1基本功上,将blue的权重值忽略不要(注意与尝试1相比)

   SELECT *,MATCH (title_fc) AGAINST (‘optimizing ok red’) as
title_score
   FROM zzx_articles 
   WHERE MATCH (title_fc) AGAINST (‘optimizing ok red blue’ IN BOOLEAN
MODE) order by title_score DESC

   澳门新萄京 12

  
总括:在尝试1的根底上,那时候去除select字段条件里的blue关键词,但在where里去仍保留blue关键词。
            小编的本心是想健康相配“optimizing ok red
blue”那多少个第生机勃勃词,但不想赢得blue的权重值(忽略blue的权重值)。
            查询的结果是含有blue关键词的数量的权重值会略下落了。
           
通过“降重”——忽视某个关键词权重值的方式可使部分数据权重值减小,进而影响排序。

+—-+——————————————–+

澳门新萄京,◆ 步骤1 配备my.ini,在my.ini末尾增加如下:

| id | data                                       |

  

   
   ▶
实验5:过滤条件:必需含有”red”关键词,假若同盟到的行中还隐含”blue”关键词则下滑此条数据权重

   SELECT *,MATCH (title_fc) AGAINST (‘optimizing ok +red ~blue’) as
title_score
   FROM zzx_articles 
   WHERE MATCH (title_fc) AGAINST (‘optimizing ok +red ~blue’ IN
BOOLEAN MODE) order by title_score DESC

   澳门新萄京 13

   总结:这一个试验未有见到明明效果,但 ~ 过滤符确实是下降此权重符

Query OK, 3 rows affected (0.21 sec)

  

   ▶
实验3:过滤条件:必得含有”red”关键词,假使相配到的行中还含有”blue”关键词,则会对此条数据扩充权重:

   SELECT *,MATCH (title_fc) AGAINST (‘optimizing ok red blue’) as
title_score
   FROM zzx_articles 
   WHERE MATCH (title_fc) AGAINST (‘optimizing ok +red blue’ IN BOOLEAN
MODE) order by title_score DESC

   或上边写法:
   SELECT *,MATCH (title_fc) AGAINST (‘optimizing ok red >blue’) as
title_score
   FROM zzx_articles 
   WHERE MATCH (title_fc) AGAINST (‘optimizing ok +red >blue’ IN
BOOLEAN MODE) order by title_score DESC

   澳门新萄京 14

  
总括:与尝试2相比较,当包涵了red的行中,若也饱含blue关键词,权重确实扩充了(如:id=4这条)。

从创造定确立法规案例子表格开头,使用以下的SQL命令:

◆ 步骤3 创设数据表
CREATE TABLE `zzx_articles` (
`id` int(10) unsigned NOT NULL auto_increment, 
`title` char(254) default NULL COMMENT ‘标题’,
`content` text COMMENT ‘内容’,
`author` char(60) default NULL COMMENT ‘作者’,
`title_fc` char(254) default NULL COMMENT ‘题指标分词’,
`content_fc` text COMMENT ‘内容的分词’,
PRIMARY KEY  (`id`),
FULLTEXT KEY `zzx_title_fc` (`title_fc`),
FULLTEXT KEY `zzx_content_fc` (`content_fc`),
FULLTEXT KEY `zzx_title_con_fc` (`title_fc`,`content_fc`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图