主页 » 正文

Mysql搜索引擎有那些?

十九科技网 2024-10-17 07:20:29 152 °C

一、Mysql搜索引擎有那些?

全文检索在MySQL里面很早就支持了,只不过一直以来只支持英文。缘由是他从来都使用空格来作为分词的分隔符,而对于中文来讲,显然用空格就不合适,需要针对中文语义进行分词。

这不,从MySQL5.7开始,MySQL内置了ngram全文检索插件,用来支持中文分词,并且对MyISAM和InnoDB引擎有效。

在使用中文检索分词插件ngram之前,先得在MySQL配置文件里面设置他的分词大小,比如,[mysqld]ngram_token_size=2这里把分词大小设置为2。要记住,分词的SIZE越大,索引的体积就越大,所以要根据自身情况来设置合适的大小。示例表结构:

CREATE TABLE articles (id INTUNSIGNED AUTO_INCREMENT NOT NULL PRIMARY KEY,titleVARCHAR(200),body TEXT,FULLTEXT (title,body) WITH PARSER ngram) ENGINE=InnoDBCHARACTER SET utf8mb4;示例数据,有6行记录。mysql> select * from articles\G**************************

*1. row ***************************id: 1title: 数据库管理body: 在本教程中我将向你展示如何管理数据库***************************2. row ***************************id: 2title: 数据库应用开发body: 学习开发数据库应用程序***************************3. row ***************************id: 3title: MySQL完全手册body: 学习MySQL的一切***************************4. row ***************************id: 4title: 数据库与事务处理body: 系统的学习数据库的事务概论***************************5. row ***************************id: 5title: NoSQL精髓body: 学习了解各种非结构化数据库***************************6. row ***************************id: 6title: SQL 语言详解body: 详细了解如果使用各种SQL6 rows inset (0.00 sec)显式指定全文检索表源mysql> SETGLOBAL innodb_ft_aux_table="new_feature/articles";Query OK, 0 rows affected (0.00 sec)通过系统表,就可以查看到底是怎么划分articles里的数据。

mysql> SELECT *FROM information_schema.INNODB_FT_INDEX_CACHE LIMIT 20,10;+------+--------------+-------------+-----------+--------+----------+| WORD | FIRST_DOC_ID | LAST_DOC_ID | DOC_COUNT | DOC_ID| POSITION |+------+--------------+-------------+-----------+--------+----------+| 中我 | 2 | 2 | 1 | 2 | 28 || 习m | 4 | 4 | 1 | 4 | 21 || 习了 | 6 | 6 | 1 | 6 | 16 || 习开 | 3 | 3 | 1 | 3 | 25 || 习数 | 5 | 5 | 1 | 5 | 37 || 了解 | 6 | 7 | 2 | 6 | 19 || 了解 | 6 | 7 | 2 | 7 | 23 || 事务 | 5 | 5 | 1 | 5 | 12 || 事务 | 5 | 5 | 1 | 5 | 40 || 何管 | 2 | 2 | 1 | 2 | 52 |+------+--------------+-------------+-----------+--------+----------+10 rows in set (0.00 sec)这里可以看到,把分词长度设置为2,所有的数据都只有两个一组。上面数据还包含了行的位置,ID等等信息。

接下来,我来进行一系列检索示范,使用方法和原来英文检索一致。1. 自然语言模式下检索:A,得到符合条件的个数,mysql>SELECT COUNT(*) FROM articles-> WHERE MATCH (title,body) AGAINST ('数据库' IN NATURALLANGUAGE MODE);+----------+| COUNT(*) |+----------+| 4 |+----------+1 row in set (0.05 sec)B,得到匹配的比率,mysql>SELECT id, MATCH (title,body) AGAINST ('数据库' IN NATURAL LANGUAGE MODE)AS score FROM articles;+----+----------------------+| id| score |+----+----------------------+| 1 | 0.12403252720832825 || 2 | 0.12403252720832825 || 3 | 0 || 4 | 0.12403252720832825 || 5 | 0.062016263604164124 || 6 | 0 |+----+----------------------+6rows in set (0.00 sec)2. 布尔模式下搜索,这个就相对于自然模式搜索来的复杂些:A,匹配既有管理又有数据库的记录,mysql> SELECT * FROM articles WHERE MATCH (title,body)-> AGAINST ('+数据库 +管理' IN BOOLEAN MODE);+----+------------+--------------------------------------+| id| title | body |+----+------------+--------------------------------------+| 1 | 数据库管理 | 在本教程中我将向你展示如何管理数据库|+----+------------+--------------------------------------+1 rowin set (0.00 sec)B,匹配有数据库,但是没有管理的记录,mysql> SELECT * FROM articles WHERE MATCH (title,body)-> AGAINST ('+数据库 -管理' IN BOOLEAN MODE);+----+------------------+----------------------------+| id| title | body |+----+------------------+----------------------------+| 2 | 数据库应用开发 | 学习开发数据库应用程序 || 4 | 数据库与事务处理 | 系统的学习数据库的事务概论 || 5 | NoSQL 精髓 | 学习了解各种非结构化数据库 |+----+------------------+----------------------------+3rows in set (0.00 sec)C,匹配MySQL,但是把数据库的相关性降低,mysql> SELECT * FROM articles WHERE MATCH (title,body)-> AGAINST ('>数据库 +MySQL' INBOOLEAN MODE);+----+---------------+-----------------+| id| title | body |+----+---------------+-----------------+| 3 | MySQL完全手册 |学习MySQL的一切 |+----+---------------+-----------------+1 rowin set (0.00 sec)3,查询扩展模式,比如要搜索数据库,那么MySQL,oracle,DB2也都将会被搜索到,mysql> SELECT * FROM articles-> WHERE MATCH (title,body)-> AGAINST ('数据库' WITH QUERY EXPANSION);+----+------------------+--------------------------------------+| id| title | body |+----+------------------+--------------------------------------+| 1 | 数据库管理 | 在本教程中我将向你展示如何管理数据库| 4 | 数据库与事务处理 | 系统的学习数据库的事务概论| 2 | 数据库应用开发 | 学习开发数据库应用程序 || 5 | NoSQL 精髓 | 学习了解各种非结构化数据库 || 6 | SQL 语言详解 | 详细了解如果使用各种SQL|| 3 | MySQL完全手册 | 学习MySQL的一切 |+----+------------------+--------------------------------------+6rows in set (0.01 sec)当然,我这里只是功能演示,更多的性能测试,大家有兴趣可以进行详细测试。由于N-grm是中文检索常用的分词算法,已经在互联网大量使用,这次集成到mysql中,想必效果上不会有太大的问题。

二、全文搜索引擎有那些?

全文搜索引擎有:

1. Lucene

Lucene的开发语言是Java,也是Java家族中最为出名的一个开源搜索引擎,在Java世界中已经是标准的全文检索程序,它提供了完整的查询引擎和索引引擎,没有中文分词引擎,需要自己去实现,因此用Lucene去做一个搜素引擎需要自己去架构.另外它不支持实时搜索,但linkedin和twitter有分别对Lucene改进的实时搜素. 其中Lucene有一个C++移植版本叫CLucene,CLucene因为使用C++编写,所以理论上要比lucene快.

官方主页:http://lucene.apache.org/

CLucene官方主页:http://sourceforge.net/projects/clucene/

2. Sphinx

Sphinx是一个用C++语言写的开源搜索引擎,也是现在比较主流的搜索引擎之一,在建立索引的事件方面比Lucene快50%,但是索引文件比Lucene要大一倍,因此Sphinx在索引的建立方面是空间换取事件的策略,在检索速度上,和lucene相差不大,但检索精准度方面Lucene要优于Sphinx,另外在加入中文分词引擎难度方面,Lucene要优于Sphinx.其中Sphinx支持实时搜索,使用起来比较简单方便.

官方主页:http://sphinxsearch.com/about/sphinx/

3. Xapian

Xapian是一个用C++编写的全文检索程序,它的api和检索原理和lucene在很多方面都很相似,算是填补了lucene在C++中的一个空缺.

官方主页:http://xapian.org/

4. Nutch

Nutch是一个用java实现的开源的web搜索引擎,包括爬虫crawler,索引引擎,查询引擎. 其中Nutch是基于Lucene的,Lucene为Nutch提供了文本索引和搜索的API.

对于应该使用Lucene还是使用Nutch,应该是如果你不需要抓取数据的话,应该使用Lucene,最常见的应用是:你有数据源,需要为这些数据提供一个搜索页面,在这种情况下,最好的方式是直接从数据库中取出数据,并用Lucene API建立索引.

官方主页:http://nutch.apache.org/

5. DataparkSearch

DataparkSearch是一个用C语言实现的开源的搜索引擎. 其中网页排序是采用神经网络模型. 其中支持HTTP,HTTPS,FTP,NNTP等下载网页.包括索引引擎,检索引擎和中文分词引擎(这个也是唯一的一个开源的搜索引擎里有中文分词引擎).能个性化定制搜索结果,拥有完整的日志记录.

官方主页:http://www.dataparksearch.org/

6. Zettair

Zettair是根据Justin Zobel的研究成果为基础的全文检索实验系统.它是用C语言实现的. 其中Justin Zobel在全文检索领域很有名气,是业界第一个系统提出倒排序索引差分压缩算法的人,倒排列表的压缩大大提高了检索和加载的性能,同时空间膨胀率也缩小到相当优秀的水平. 由于Zettair是源于学术界,代码是由RMIT University的搜索引擎组织写的,因此它的代码简洁精炼,算法高效,是学习倒排索引经典算法的非常好的实例. 其中支持linux,windows,mac os等系统.

官方主页:http://www.seg.rmit.edu.au/zettair/about.html

7. Indri

Indri是一个用C语言和C++语言写的全文检索引擎系统,是由University of Massachusetts和Carnegie Mellon University合作推出的一个开源项目. 特点是跨平台,API接口支持Java,PHP,C++.

官方主页:http://www.lemurproject.org/indri/

8. Terrier

Terrier是由School of Computing Science,Universityof Glasgow用java开发的一个全文检索系统.

官方主页:http://terrier.org/

9. Galago

Galago是一个用java语言写的关于文本搜索的工具集. 其中包括索引引擎和查询引擎,还包括一个叫TupleFlow的分布式计算框架(和google的MapReduce很像).这个检索系统支持很多Indri查询语言.

官方主页:http://www.galagosearch.org/

10. Zebra

Zebra是一个用C语言实现的检索程序,特点是对大数据的支持,支持EMAIL,XML,MARC等格式的数据.

官方主页:https://www.indexdata.com/zebra

11. Solr

Solr是一个用java开发的独立的企业级搜索应用服务器,它提供了类似于Web-service的API接口,它是基于Lucene的全文检索服务器,也算是Lucene的一个变种,很多一线互联网公司都在使用Solr,也算是一种成熟的解决方案.

官方主页:http://lucene.apache.org/solr/

12. Elasticsearch

Elasticsearch是一个采用java语言开发的,基于Lucene构造的开源,分布式的搜索引擎. 设计用于云计算中,能够达到实时搜索,稳定可靠. Elasticsearch的数据模型是JSON.

官方主页:http://www.elasticsearch.org/

13. Whoosh

Whoosh是一个用纯python写的开源搜索引擎.

官方主页:https://bitbucket.org/mchaput/whoosh/wiki/Home

三、哪些属于目录搜索引擎?

常见的目录搜索引擎包括 Yahoo!目录,DMOZ,LookSmart 和 About.com。它们通常提供预编辑的网站分类,用户可以浏览或搜索,以找到满足他们需求的网站。

四、机器人搜索引擎是什么?

搜索引擎机器人又叫爬虫,是一个形象化的一个系统。他是搜索引擎抓取网站内容,并将内容储存到搜索引擎数据库的一种工具。

五、搜索引擎属于知识问答吗?

搜索引擎不属于知识问答。因为搜索引擎主要原理是利用关键字在资料库里找到你需要的东西,这只是匹配的原理,不是知识问答,一般知识问答是有人提出问题,别人过来回答,所以说是人工回复,而搜索引擎只要资料库足够丰富,就能找到答案

六、全文搜索引擎和目录搜索引擎和元素搜索引擎的区别?

全文搜索引擎、目录搜索引擎与元搜索引擎的区别为:数据来源不同、操作不同、得到网站不同。

一、数据来源不同

1、全文搜索引擎:全文搜索引擎的数据来源为自动抓取的网页生成索引。

2、目录搜索引擎:目录搜索引擎的数据来源为人工收录分类的数据库。

3、元搜索引擎:元搜索引擎的数据来源为其他搜索引擎获取结果。

二、操作不同

1、全文搜索引擎:全文搜索引擎通过从互联网上提取的各个网站的信息而建立的数据库中,检索与用户查询条件匹配的相关记录,然后按一定的排列顺序将结果返回给用户。

2、目录搜索引擎:目录搜索引擎通过现有收录的网站信息按目录分类的网站链接列表匹配,将匹配结果返回给用户。

3、元搜索引擎:元搜索引擎在接受用户查询请求时,同时在其他多个引擎上进行搜索,并将结果返回给用户。

三、得到网站不同

1、全文搜索引擎:全文搜索引擎得到的网站信息更及时。

2、目录搜索引擎:目录搜索引擎得到的网站质量更高。

3、元搜索引擎:元搜索引擎得到的网站信息数量更多。

七、搜索引擎营销属于什么营销方法

搜索引擎即sem,是一种常见的互联网营销方法,通过提高搜索量来进行排名,比较靠前,从而吸引更多的用户的点击

八、Yahoo搜索属于哪类搜索引擎()?

雅虎(Yahoo!,NASDAQ:YHOO)是美国著名的互联网门户网站,20世纪末互联网奇迹的创造者之一。其服务包括搜索引擎、电邮、新闻等,业务遍及24个国家和地区,为全球超过5亿的独立用户提供多元化的网络服务。同时也是是一家全球性的因特网通讯、商贸及媒体公司。

九、什么是搜索引擎搜索引擎怎样分类?

搜索引擎(Search Engine)是指根据一定的策略、运用特定的计算机程序从互联网上搜集信息,在对信息进行组织和处理后,为用户提供检索服务,将用户检索相关的信息展示给用户的系统。

搜索引擎包括全文索引、目录索引、元搜索引擎、垂直搜索引擎、集合式搜索引擎、门户搜索引擎与免费链接列表等。

十、hao123属于目录搜索引擎吗?

是的,hao123可以归类为目录搜索引擎。目录搜索引擎是一种通过人工分类和编辑的方式来为网站提供导航和索引的搜索引擎。hao123提供了各种分类和子分类,方便用户浏览和查找相关网站。用户可以根据自己的需要选择不同的分类,例如新闻、购物、娱乐等,以快速定位所需信息。

版权声明:部分内容由互联网用户自发贡献,如有侵权/违规,请联系删除
本平台仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。

本文链接地址:/jqr/128838.html

相关文章

那些吊炸天的电影

一、那些吊炸天的电影 那些吊炸天的电影 电影作为一种大众文化娱乐形式,已经深入人心,成为人们生活的一部分。而在众多的电影作品中,总有一些独树一帜、让人印象深刻的电影

机器人 2024-12-12 115 °C

培训机构有那些

一、培训机构有那些 博客:培训机构有那些 随着时代的发展,人们对知识和技能的需求日益增长,培训机构的重要性也日益突显。那么, 培训机构有那些 ,如何选择适合自己的培训机

机器人 2024-12-09 64 °C

那些网站可以下载名牌工

一、那些网站可以下载名牌工业机器人图纸 或者开源机器人资料? 曾经有个同学说他那里有库卡机械臂的图纸。我看了下,长得确实一样。不过名牌机器人公司的图纸大概是不会开源的

机器人 2024-12-09 209 °C

俄版搜索引擎视频叫什么

一、俄版搜索引擎视频叫什么? 俄版搜索引擎视频应该是指Yandex.Video,它是俄罗斯著名的搜索引擎Yandex推出的在线视频平台。Yandex.Video提供了海量的在线视频资源,用户可以在平台上搜

机器人 2024-12-07 188 °C

有那些有趣的对联?

一、有那些有趣的对联? 1.【拆字联】 冻雨洒窗,东二点,西三点; 切瓜分客,横七刀,竖八刀。 2.【合字联】 女姚虽好,只如半朵桃花; 人言为信,莫费一番言说。 3.【同字异音联】 海水朝朝

机器人 2024-12-07 214 °C

Googlechrome 为何用的是G

一、Googlechrome 为何用的是Google搜索引擎? Chrome 浏览器默认使用的是 Google 搜索引擎,这是由于以下几个原因: 1. Google 是全球最大的搜索引擎之一,其搜索算法和技术非常成熟和先进,

机器人 2024-12-02 255 °C

上海世博会主要展览那些

一、上海世博会主要展览那些内容? 主要展览: 科技创新,文化遗产,民俗,未来城市,环保与可持续发展 科技创新展览是上海世博会的另一个亮点,展示了各种前沿科技的应用和研究

机器人 2024-12-02 258 °C

制作机器人要那些工具?

一、制作机器人要那些工具? DIY机器人需要的工具一般如下: 车床、铣床或者外协加工齿轮、手臂等零部件;购置PLC、电机、减速机、润滑油脂;配电盘、开关电气等;装配场地及人

机器人 2024-12-02 279 °C

东航服务机器人“东东”

一、东航服务机器人“东东”能提供那些服务? “东东”是中国国内首个被航空公司选中的服务机器人,这是东航旨在全面让旅客在机场享有更加智能、便捷的出行体验,机器人“东东

机器人 2024-11-20 300 °C

沈阳有那些游乐场所?

一、沈阳有那些游乐场所? 不知道你的年龄,不知道你喜欢什么玩什么,没办法推荐啊,毕竟那么多的娱乐方式 二、沈阳室外游乐场排名? 一、方特欢乐世界。激流勇进相当刺激。

机器人 2024-11-18 134 °C