bitsCN.com对于大的数据库,将数据装载到一个没有 FULLTEXT 索引的表中,然后再使用 ALTER TABLE (或 CREATE INDEX) 创建索引,这将是非常快的。将数据装载到一个已经有 FULLTEXT 索引的表中,将是非常慢的。1.使用Mysql全文检索fulltext的先决条件 表的类型必须是MyISAM建立全文检索的字段类型必须是char,varchar,text2.建立全文检索先期配置由于Mysql的默认配置是索引的词的长度是4,所以要支持中文单字的话,首先更改这个.*Unix用户要修改my.cnf,一般此文件在/etc/my.cnf,如果没有找到,先查找一下find / -name 'my.cnf'在 [mysqld] 位置内加入: ft_min_word_len = 2 其它属性还有 ft_wordlist_charset = gbk ft_wordlist_file = /home/soft/mysql/share/mysql/wordlist-gbk.txt ft_stopword_file = /home/soft/mysql/share/mysql/stopwords-gbk.txt 稍微解释一下: ft_wordlist_charset 表示词典的字符集, 目前支持良好的有(UTF-8, gbk, gb2312, big5) ft_wordlist_file 是词表文件, 每行包括一个词及其词频(用若干制表符或空格分开,消岐专用) ft_stopword_file 表示过滤掉不索引的词表, 一行一个. ft_min_word_len 加入索引的词的最小长度, 缺省是 4, 为了支持中文单字故改为 2 3.建立全文检索在建表中用FullText关键字标识字段,已存在的表用 ALTER TABLE (或 CREATE INDEX) 创建索引CREATE fulltext INDEX index_name ON table_name(colum_name);4.使用全文检索 在SELECT的WHERE字句中用MATCH函数,索引的关键词用AGAINST标识,IN BOOLEAN MODE是只有含有关键字就行,不用在乎位置,是不是起启位置.SELECT * FROM articles WHERE MATCH (tags) AGAINST ('旅游' IN BOOLEAN MODE);5.详细的说明请参数Mysql官方网站http://dev.mysql.com/doc/refman/5.1/zh/functions.html#fulltext-search这是Mysql 5.1的,不过4.X也可以做为参考,基本一置.我用的就是Mysql 4.1.
MySQL支持全文索引(Full-Text) 已经很久了,目前,fulltext是一种只适用于MyISAM表的一个索引类型,而且对定义索引列的数据类型也有限制,只能是以下三种的组合char、 varchar、text。fulltext可以在创建表的同时就一起定义好,或者在表创建完成之后,通过语句alter table或create index来追加索引,总之先后的效果是一样的,但是两者的效率却是存在很大差异的,大量的实验证明,对于大数量的表来说,先加载数据再来定义全文索引的 速度要远远优于在一个已经定义好全文索引的表里面插入大量数据的速度。一定会问:这是问什么呢?其实,道理很简单,前者只需要一次性对你的索引列表进行操 作,排序比较都是在内存中完成,然后写入硬盘;后者则要一条一条去硬盘中读取索引表然后再进行比较最后写入,自然这样速度就会很慢。MySQL是 通过match()和against()这两个函数来实现它的全文索引查询的功能。match()中的字段名称要和fulltext中定义的字段一致,如 果采用boolean模式搜索,也允许只包括fulltext中的某个字段,不需要全部列出。against()中定义的是所要搜索的字符串以及要求数据 库通过哪种模式去执行全文索引的搜索查询。下面通过一个例子分别介绍一下fulltext所支持的3中搜索模式。
MySQL全文索引与中文分词总结及一般的关键词搜索流程 http://www.tzlink.com/info/show.php?aid=4532
mysql 全文检索 中文分词http://hi.baidu.com/agg230/blog/item/33d3d50eada260e337d1225b.html
支持中文的MySQL 5.1+ 全文检索分词插件http://hi.baidu.com/start_and_end/blog/item/6d6ab918b7d3800334fa412e.html
家用一下搜索引擎就会发现,分词的情况只是出现在当整词命中为0的情况下。 而具体怎样分词,大家可以参考一下baidu搜索试验结果: 如果搜“徐祖宁宁”,结果为“徐祖”+“宁宁”。(搜人名的情况下,它可能有一个百家姓词典,自动将姓后第一个字归前) 搜“徐宁愿”,结果为“徐宁愿”。(说明“宁愿”归“徐”所有。同上。因为徐是姓。) 搜“徐祖宁愿”,结果为“徐祖”+“宁愿”。(因为“宁愿”是词,故“徐”只带“祖”。) 搜“徐祖宁高”,结果为“徐祖宁”。(因为“宁高”不是关键字,所以“宁”归前词所有。而“高”可能因为是单字,为提高前词搜索效率故被省略。)
bitsCN.com小编还为您整理了以下内容,可能对您也有帮助:
如何实现Mysql中的 match,against 操作
1.使用Mysql全文检索fulltext的先决条件
表的类型必须是MyISAM
建立全文检索的字段类型必须是char,varchar,text
2.建立全文检索先期配置
由于Mysql的默认配置是索引的词的长度是4,所以要支持中文单字的话,首先更改这个.
*Unix用户要修改my.cnf,一般此文件在/etc/my.cnf,如果没有找到,先查找一下find / -name 'my.cnf'
在 [mysqld] 位置内加入:
ft_min_word_len = 2
其它属性还有
ft_wordlist_charset = gbk
ft_wordlist_file = /home/soft/mysql/share/mysql/wordlist-gbk.txt
ft_stopword_file = /home/soft/mysql/share/mysql/stopwords-gbk.txt
稍微解释一下:
ft_wordlist_charset 表示词典的字符集, 目前支持良好的有(UTF-8, gbk, gb2312, big5)
ft_wordlist_file 是词表文件, 每行包括一个词及其词频(用若干制表符或空格分开,消岐专用)
ft_stopword_file 表示过滤掉不索引的词表, 一行一个.
ft_min_word_len 加入索引的词的最小长度, 缺省是 4, 为了支持中文单字故改为 2
3.建立全文检索
在建表中用FullText关键字标识字段,已存在的表用 ALTER TABLE (或 CREATE INDEX) 创建索引
CREATE fulltext INDEX index_name ON table_name(colum_name);
4.使用全文检索
在SELECT的WHERE字句中用MATCH函数,索引的关键词用AGAINST标识,IN BOOLEAN MODE是只有含有关键字就行,不用在乎位置,是不是起启位置.
SELECT * FROM articles WHERE MATCH (tags) AGAINST ('旅游' IN BOOLEAN MODE);
mysql全文搜索索引的字段提高搜索效率
一个SELECT查询中的LIKE语句来执行这种查询,尽管这种方法可行,但对于全文查找而言,这是一种效率极端低下的方法,尤其在处理大量数据的时候。
开发者只需要简单地标记出需要全文查找的字段,然后使用特殊的MySQL方法在那些字段运行搜索,这不仅仅提高了性能和效率(因为MySQL对这些字段做了索引来优化搜索),而且实现了更高质量的搜索,因为MySQL使用自然语言来智能地对结果评级,以去掉不相关的项目。
建表:
ALTER TABLE 表名 ADD FULLTEXT INDEX (表字段);
使用SHOW INDEXES命令来检查索引已经被添加
拥有了数据和索引,就可以使用MySQL的全文搜索了,最简单的全文搜索方式是带有MATCH...AGAINST语句的SELECT查询:
SELECT 表字段 FROM 表名 WHERE MATCH (全文搜索表字段) AGAINST ('搜索字符串');
最后显示结果
mysql全文搜索索引的字段提高搜索效率
一个SELECT查询中的LIKE语句来执行这种查询,尽管这种方法可行,但对于全文查找而言,这是一种效率极端低下的方法,尤其在处理大量数据的时候。
开发者只需要简单地标记出需要全文查找的字段,然后使用特殊的MySQL方法在那些字段运行搜索,这不仅仅提高了性能和效率(因为MySQL对这些字段做了索引来优化搜索),而且实现了更高质量的搜索,因为MySQL使用自然语言来智能地对结果评级,以去掉不相关的项目。
建表:
ALTER TABLE 表名 ADD FULLTEXT INDEX (表字段);
使用SHOW INDEXES命令来检查索引已经被添加
拥有了数据和索引,就可以使用MySQL的全文搜索了,最简单的全文搜索方式是带有MATCH...AGAINST语句的SELECT查询:
SELECT 表字段 FROM 表名 WHERE MATCH (全文搜索表字段) AGAINST ('搜索字符串');
最后显示结果
MySQL 全文查找 MATCH AGAINST 模式怎样实现中文多词模糊查找
在使用mysql进行中文模糊查找时需要注意一些方面:
(如select * from mytable where mysqlname like "%中文%"),就象我现在一样,找到不应找到的行!
有一些朋友提出了解决办法,大致有两种:
其一,加字段属性binary(),
其二,改my.cfg启动参数为default-character-set =gbk(或gb2312).
我从问题的根本原因分析,
其一,字母大小不区分问题(通过方法一可以解决)
其二,这是大多数人没有想到的,我以前也没有想到,
例:
汉字“不”的第1、2字节ascii值分别为:178与187
汉字“安”的第1、2字节ascii值分别为:176与178
汉字“花”的第1、2字节ascii值分别为:187与168
聪明的人已经看出来了:在字符串“安花”中模糊查找字符“不”字时,mysql系统也会认为两者区配!
另外:
my.ini 文件中加入 default-character-set =gb2312 ,字段不要加 Binary 属性 ,执行 select * from mytable where mysqlname like "%不%"
MySQL 全文查找 MATCH AGAINST 模式怎样实现中文多词模糊查找
在使用mysql进行中文模糊查找时需要注意一些方面:
(如select * from mytable where mysqlname like "%中文%"),就象我现在一样,找到不应找到的行!
有一些朋友提出了解决办法,大致有两种:
其一,加字段属性binary(),
其二,改my.cfg启动参数为default-character-set =gbk(或gb2312).
我从问题的根本原因分析,
其一,字母大小不区分问题(通过方法一可以解决)
其二,这是大多数人没有想到的,我以前也没有想到,
例:
汉字“不”的第1、2字节ascii值分别为:178与187
汉字“安”的第1、2字节ascii值分别为:176与178
汉字“花”的第1、2字节ascii值分别为:187与168
聪明的人已经看出来了:在字符串“安花”中模糊查找字符“不”字时,mysql系统也会认为两者区配!
另外:
my.ini 文件中加入 default-character-set =gb2312 ,字段不要加 Binary 属性 ,执行 select * from mytable where mysqlname like "%不%"
全文搜索之MySQL与ElasticSearch搜索引擎
MySQL支持全文索引和搜索功能。在MySQL中可以在CHAR、VARCHAR或TEXT列使用FULLTETXT来创建全文索引。
FULLTEXT索引主要用MATCH()...AGAINST语法来实现搜索:
MySQL的全文搜索存在以下局限:
通常来说MySQL自带的全文搜索使用起来局限性比较大,性能和功能都不太成熟,主要适用于小项目,大项目还是建议使用elasticsearch来做全文搜索。
ElasticSearch是一个分布式的开源搜索和分析引擎,适用于所有类型的数据,包括文本、数字、地理空间、结构化和非结构化数据,以下简称ES。
Elasticsearch 在 Apache Lucene 的基础上开发而成,Elasticsearch 以其简单的 REST 风格 API、分布式特性、速度和可扩展性而闻名,是 Elastic Stack 的核心组件。Elastic Stack 是适用于数据采集、充实、存储、分析和可视化的一组开源工具。
Elasticsearch 的实现原理主要分为以下几个步骤,首先用户将数据提交到Elasticsearch 数据中心,再通过分词控制器去将对应的数据分词,将其权重和分词结果一并存入数据,当用户搜索数据时候,再根据权重将结果排名,打分,再将返回结果呈现给用户。
由于ES是基于RESTfull Web接口的,因此我们直接按照惯例传递JSON参数调用接口即可实现增删改查,并且不需要我们做额外的管理操作就可以直接索引文档,ES已经内置了所有的缺省操作,可以自动帮我们定义类型。
再次执行PUT,会对库中已有的id为1的数据进行覆盖,每修改一次_version字段的版本号就会加1。
默认搜索会返回前10个结果:
返回的几个关键词:
查询字符串搜索,可以像传递URL参数一样传递查询语句。
精确查询:
全文搜索:
以上两种方法都需要考虑数据更改后如何与ES进行同步。
全文搜索之MySQL与ElasticSearch搜索引擎
MySQL支持全文索引和搜索功能。在MySQL中可以在CHAR、VARCHAR或TEXT列使用FULLTETXT来创建全文索引。
FULLTEXT索引主要用MATCH()...AGAINST语法来实现搜索:
MySQL的全文搜索存在以下局限:
通常来说MySQL自带的全文搜索使用起来局限性比较大,性能和功能都不太成熟,主要适用于小项目,大项目还是建议使用elasticsearch来做全文搜索。
ElasticSearch是一个分布式的开源搜索和分析引擎,适用于所有类型的数据,包括文本、数字、地理空间、结构化和非结构化数据,以下简称ES。
Elasticsearch 在 Apache Lucene 的基础上开发而成,Elasticsearch 以其简单的 REST 风格 API、分布式特性、速度和可扩展性而闻名,是 Elastic Stack 的核心组件。Elastic Stack 是适用于数据采集、充实、存储、分析和可视化的一组开源工具。
Elasticsearch 的实现原理主要分为以下几个步骤,首先用户将数据提交到Elasticsearch 数据中心,再通过分词控制器去将对应的数据分词,将其权重和分词结果一并存入数据,当用户搜索数据时候,再根据权重将结果排名,打分,再将返回结果呈现给用户。
由于ES是基于RESTfull Web接口的,因此我们直接按照惯例传递JSON参数调用接口即可实现增删改查,并且不需要我们做额外的管理操作就可以直接索引文档,ES已经内置了所有的缺省操作,可以自动帮我们定义类型。
再次执行PUT,会对库中已有的id为1的数据进行覆盖,每修改一次_version字段的版本号就会加1。
默认搜索会返回前10个结果:
返回的几个关键词:
查询字符串搜索,可以像传递URL参数一样传递查询语句。
精确查询:
全文搜索:
以上两种方法都需要考虑数据更改后如何与ES进行同步。
如何使用mysql的全文索引搜索
你有没有想过如何使用搜索功能在所有整站中实现!互联网博客和网站,大多数都采用MySQL数据库。MySQL提供了一个美妙的方式实施一个小的搜索引擎,在您的网站(全文检索)。所有您需要做的是拥有的MySQL 4.x及以上。MySQL提供全文检索功能,我们可以用它来 ??实现搜索功能。
首先,让我们为我们的例子中设置一个示例表。我们将创建一个名为第一个表。
CREATE TABLE articles (
id INT UNSIGNED AUTO_INCREMENT NOT NULL PRIMARY KEY,
title VARCHAR(200),
body TEXT,
FULLTEXT (title,body)
);
在此表中还可以添加一些示例数据。执行后,插入查询。
INSERT INTO articles (title,body) VALUES
('MySQL Tutorial','DBMS stands for DataBase ...'),
('How To Use MySQL Well','After you went through a ...'),
('Optimizing MySQL','In this tutorial we will show ...'),
('1001 MySQL Tricks','1. Never run mysqld as root. 2. ...'),
('MySQL vs. YourSQL','In the following database comparison ...'),
('MySQL Security','When configured properly, MySQL ...');
一旦样本数据是准备好,我们可以开始我们的全文检索功能。
自然语言全文搜索
尝试我们的示例表上执行下面的SELECT查询。
SELECT * FROM articles
WHERE MATCH (title,body) AGAINST ('database');
你就能看到结果如下:
在下面的数据库比较5 MySQL与YourSQL的...
MySQL教程DBMS 1代表数据库...
我们在上面的SQL查询(标题,正文)反对(“数据库”)的比赛,选择所有的记录,列标题和正文进行全文搜索。
您可以修改该查询,并创建您自己的版本,以自己的数据库中执行全文搜索。
布尔全文搜索
它可能发生,你要指定某些关键字在您的搜索条件。此外,您可能要忽略某些关键字。布尔全文搜索可以用来执行这些要求的全文检索。
检查下面的SELECT查询。
SELECT * FROM articles WHERE MATCH (title,body)
AGAINST ('+MySQL -YourSQL' IN BOOLEAN MODE);
如果您发现上述选择查询,我们增加了布尔MODE反对()。这个查询将获取MySQL的关键字,但不YourSQL关键字的所有记录。请注意+和-我们以前指定的关键字!
在执行此功能,MySQL使用什么有时也被称为布尔逻辑作为暗示,其中:+代表与-代表不是[无操作员]暗示或
以下是几个例子布尔搜索条件。
“苹果香蕉
查找行至少包含两个词之一。
“+苹果+果汁”
寻找包含两个单词的行。
“+苹果Macintosh
查找行包含“苹果”,但排名的行,如果它们也包含“麦金塔”。
“+苹果Macintosh的”
查找行包含“苹果”这个词,而不是“麦金塔”。
'+苹果Macintosh的“
查找包含单词“苹果”的行,但如果该行也包含单词“麦金塔”,速度比如果行不低。这是“软”比“+苹果Macintosh电脑”,为“麦金塔”的存在,导致该行不能在所有返回的搜索。
'+苹果+(>营业额<馅饼)“
行包含“苹果”和“营业额”,或“苹果”和“馅饼”(任何顺序)的话,但排名“苹果的营业额”比“苹果馅饼“。
*
支持全文检索的MyISAM表只。MySQL 4.1中,使用多个字符设置一个单一的表内的支持。然而,在一个FULLTEXT索引的所有列,必须使用相同的字符集和校对规则。MATCH()列列表必须匹配完全在一些列清单表的FULLTEXT索引定义,除非这场比赛()是在布尔模式。布尔模式搜索,可以做非索引列,虽然他们很可能是缓慢的。
如何使用mysql的全文索引搜索
你有没有想过如何使用搜索功能在所有整站中实现!互联网博客和网站,大多数都采用MySQL数据库。MySQL提供了一个美妙的方式实施一个小的搜索引擎,在您的网站(全文检索)。所有您需要做的是拥有的MySQL 4.x及以上。MySQL提供全文检索功能,我们可以用它来 ??实现搜索功能。
首先,让我们为我们的例子中设置一个示例表。我们将创建一个名为第一个表。
CREATE TABLE articles (
id INT UNSIGNED AUTO_INCREMENT NOT NULL PRIMARY KEY,
title VARCHAR(200),
body TEXT,
FULLTEXT (title,body)
);
在此表中还可以添加一些示例数据。执行后,插入查询。
INSERT INTO articles (title,body) VALUES
('MySQL Tutorial','DBMS stands for DataBase ...'),
('How To Use MySQL Well','After you went through a ...'),
('Optimizing MySQL','In this tutorial we will show ...'),
('1001 MySQL Tricks','1. Never run mysqld as root. 2. ...'),
('MySQL vs. YourSQL','In the following database comparison ...'),
('MySQL Security','When configured properly, MySQL ...');
一旦样本数据是准备好,我们可以开始我们的全文检索功能。
自然语言全文搜索
尝试我们的示例表上执行下面的SELECT查询。
SELECT * FROM articles
WHERE MATCH (title,body) AGAINST ('database');
你就能看到结果如下:
在下面的数据库比较5 MySQL与YourSQL的...
MySQL教程DBMS 1代表数据库...
我们在上面的SQL查询(标题,正文)反对(“数据库”)的比赛,选择所有的记录,列标题和正文进行全文搜索。
您可以修改该查询,并创建您自己的版本,以自己的数据库中执行全文搜索。
布尔全文搜索
它可能发生,你要指定某些关键字在您的搜索条件。此外,您可能要忽略某些关键字。布尔全文搜索可以用来执行这些要求的全文检索。
检查下面的SELECT查询。
SELECT * FROM articles WHERE MATCH (title,body)
AGAINST ('+MySQL -YourSQL' IN BOOLEAN MODE);
如果您发现上述选择查询,我们增加了布尔MODE反对()。这个查询将获取MySQL的关键字,但不YourSQL关键字的所有记录。请注意+和-我们以前指定的关键字!
在执行此功能,MySQL使用什么有时也被称为布尔逻辑作为暗示,其中:+代表与-代表不是[无操作员]暗示或
以下是几个例子布尔搜索条件。
“苹果香蕉
查找行至少包含两个词之一。
“+苹果+果汁”
寻找包含两个单词的行。
“+苹果Macintosh
查找行包含“苹果”,但排名的行,如果它们也包含“麦金塔”。
“+苹果Macintosh的”
查找行包含“苹果”这个词,而不是“麦金塔”。
'+苹果Macintosh的“
查找包含单词“苹果”的行,但如果该行也包含单词“麦金塔”,速度比如果行不低。这是“软”比“+苹果Macintosh电脑”,为“麦金塔”的存在,导致该行不能在所有返回的搜索。
'+苹果+(>营业额<馅饼)“
行包含“苹果”和“营业额”,或“苹果”和“馅饼”(任何顺序)的话,但排名“苹果的营业额”比“苹果馅饼“。
*
支持全文检索的MyISAM表只。MySQL 4.1中,使用多个字符设置一个单一的表内的支持。然而,在一个FULLTEXT索引的所有列,必须使用相同的字符集和校对规则。MATCH()列列表必须匹配完全在一些列清单表的FULLTEXT索引定义,除非这场比赛()是在布尔模式。布尔模式搜索,可以做非索引列,虽然他们很可能是缓慢的。
mysql 中怎么查找一个关键字
需要用到的工具:Mysql数据库,Navicate for mysql,步骤如下:
1、首先打开Navicate,连接Mysql数据库,点击图中框中的Mysql数据库右键即可。
2、Mysql数据库右键之后,然后在出现的菜单栏选择在数据库中查找选项进入。
3、点击在数据库中查找之后,进入新的界面,输入要查找的关键字或词语。
4、输入完成之后,然后点击右侧的查找按钮即可完成。
5、然后就可以看到查找结果了,这样就解决了问题。
MySQL索引类型
MySQL目前主要的索引类型有下面几种:
与前面的普通索引类似,但是他的索引列的值必须是唯一的,所以叫唯一索引,但是这个索引字段如果是空值是可以的,具体创建方式如下:
主键索引是一种特殊的索引,一个表只能有一个主键,不允许有空值,一般是创建表的时候创建主键索引,而且一般习惯设置成自增的,因为对弈MySQL的底层B+树存储起来很方便
组合索引指多个字段上创建的索引,只有在查询时候,查询条件中使用了创建索引时的第一个字段,索引才会生效,他使用遵循最左前缀原则.
索引生效情况:
select * from table where name=1;
select * from table where name=1 and city=2;
select * from table where name=1 and city=2 and age=3;
索引不生效情况:
select * from table where name=1 and age=3;
select * from table where city=2 and age=3;
select * from table where age=3;
select * from table where city=2;
这个遵循的是最左原则,具体MySQL底层对联合索引的存储以及为什么是最左原则,参考本人另外一篇文章最后一段就能看明白
https://www.jianshu.com/p/99aabf9611a3
全文索引主要是用来查找文本中的关键字,而不是直接与索引中的值相比较.fulltext索引跟其他索引大不相同,他更像是一个搜索引擎,而不是简单的where 语句的参数匹配,fulltext索引配合match(匹配)和against(反对)操作使用,而不是一般的where语句加上like,他可以在create table,alter table,create index使用
本文如未解决您的问题请添加抖音号:51dongshi(抖音搜索懂视),直接咨询即可。
JS的event对象Event属性和方法:1. type:事件的类型,如onlick中的click;2. srcElement/target:事件源,就是发生事件的元素;3. button:声明被按下的鼠标键,整数,1代表左键,2代表右键,4代表中键,如果按下多个键,酒把这些值加起来,所以3就代表左右键同时按下;(firefox中 0代表左键,1代表中间键,2代表右键)4. clientX/clientY:事件发生的时候,鼠标相对于浏览器窗口可视文档区域的左上角的位置;(在DOM标准中,这两个属
本主题提供一个以 HTML/JavaScript 编写的脚本,管理员可以使用该脚本来确定系统上是否存在 .NET Framework 3.5。<HTML<HEAD<TITLETest for the .NET Framework 3.5</TITLE<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=utf-8" /<SCRIPT LANGUAGE=&q
很简单的,给你个思路:例如A、B表格一行只有一个单元格,那么给A表格要移动内容的行TD,定义一个ID1;给B表格要存放内容的那行TD,定义一个ID2。然后JS中通过ID1获取A表格那行TD内容,再在JS中通过ID2赋值内容。涉及语法://获取A表格那单元格内容var tableATdValue = document.getElementById("ID1").innerHTML;//内容存入B表格那单元格document.getElementById("ID2&
<script language="javascript">function i(vl){ if(vl==6){ document.getElementById("div1").innerHTML="<input type='text' value='' name='t1' id='t1'>"; }else{ document.getElemen
页面中如下格式的人员信息表格:表格每行的HTML结构为:<tr> <td><input type="checkbox"></td> <td>2</td> <td>李斯</td> <td>43</td> <td>陕西</td></tr>假定表格的元素id为person-list,奇数行的class名为odd。 请实现如下功能