精华内容
下载资源
问答
  • 常见搜索引擎介绍

    2020-10-23 10:21:30
    常见搜索引擎:Lucene,Solr,Elasticsearch Lucene Lucene是一个Java全文搜索引擎,完全用Java编写。Lucene不是一个完整的应用程序,而是一个代码库和API,可以很容易地用于向应用程序添加搜索功能 通过简单...

    常见的搜索引擎:Lucene,Solr,Elasticsearch

     

    Lucene

    Lucene是一个Java全文搜索引擎,完全用Java编写。Lucene不是一个完整的应用程序,而是一个代码库和API,可以很容易地用于向应用程序添加搜索功能

    通过简单的API提供强大的功能

    • 可扩展的高性能索引
    • 强大,准确,高效的搜索算法
    • 跨平台解决方案

    Apache软件基金会

    • 在Apache软件基金会提供的开源软件项目的Apache社区的支持
    • 但是Lucene只是一个框架,要充分利用它的功能,需要使用java,并且在程序中集成Lucene。需要很多的学习了解,才能明白它是如何运行的,熟练运用Lucene确实非常复杂

    Solr

    Solr是一个基于Lucene的Java库构建的开源搜索平台。它以用户友好的方式提供Apache Lucene的搜索功能。它是一个成熟的产品,拥有强大而广泛的用户社区。它能提供分布式索引,复制,负载均衡查询以及自动故障转移和恢复。如果它被正确部署然后管理理得好,它就能够成为一个高度可靠,可扩展且容错的搜索引擎。很多互联网巨头,如Netflix,eBay,Instagram和亚马逊都使用Solr,因为它能够索引和搜索多个站点

    强大的功能

    • 全文搜索
    • 突出
    • 分面搜索
    • 实时索引
    • 动态群集
    • 数据库集成
    • NoSQL功能和丰富的文档处理

    Elasticsearch

    Elasticsearch是一个开源,是一个基于Apache Lucene库构建的Restful搜索引擎.

    Elasticsearch是在Solr之后几年推出的。它提供了一个分布式,多租户能力的全文搜索引擎,具有HTTP Web界面(REST)和无架构JSON文档。Elasticsearch的官方客户端库提供Java,Groovy,PHP,Ruby,Perl,Python,.NET和Javascript

    主要功能

    • 分布式搜索
    • 数据分析
    • 分组和聚合

    应用场景

    • 维基百科
    • Stack Overflow
    • GitHub
    • 电商网站
    • 日志数据分析
    • 商品价格监控网站
    • BI系统
    • 站内搜索
    • 篮球论坛
    展开全文
  • 3、常见搜索引擎 1)Lucene 2)Solr 3)Elastic Search 1、什么是全文搜索引擎? 1)数据分类 结构化数据:指具有固定格式或有限长度的数据,如数据库,元数据等;对于结构化数据,我们一般都是可以通过关系...

    目录

    1、什么是全文搜索引擎?

    1)数据分类

    2)顺序扫描

    3)全文搜索

    4)什么是全文搜索引擎?

    5)搜索引擎

    2、为什么不用mysql做全文搜索

    1)数据类型

    2)搜索性能

    3)灵活的搜索

    4)索引的维护

    5)适合全文索引引起的场景

    3、常见的搜索引擎

    1)Lucene

    2)Solr

    3)Elastic Search


    1、什么是全文搜索引擎?

    1)数据分类

    • 结构化数据:指具有固定格式或有限长度的数据,如数据库,元数据等;对于结构化数据,我们一般都是可以通过关系型数据库(Mysql、Oracle)等table的方式存储和搜索,也可以建立索引,通过b-tree等数据接口快速所搜数据。
    • 非结构化数据:全文数据,指不定长或无固定格式的数据,如邮件,word文档等;对于非结构化数据,也即对全文数据的所搜主要有两种方法:顺序扫描法、全文检索法。

    2)顺序扫描

    • 按照顺序扫描的方式查找特定的关键字。比如让你在一篇文章中,找出相应的文字出现在什么地方,那你肯定需要从头到尾的把文章阅读一遍,然后标记出关键字在那些地方出现过。
    • 这种方法的效率很低,如果文章很长,有几万字,等阅读完,需要花费很多时间。

    3)全文搜索

    • 对非结构化数据进行顺序扫描很慢,我们可以把非结构化数据想办法弄得有一定结构;将非结构化数据中的一部分信息提取出来,重新组织,使其变得有一定结构,然后对这些有一定结构的数据进行搜索,从而达到搜索相对较快的目的。这种方式就构成了全文搜索的基本思路。这部分从非结构化数据中提取出的然后重新组织的信息,我们称之索引

    4)什么是全文搜索引擎?

    • 根据百度百科中的定义,全文搜索引擎是目前广泛应用的主流搜索引擎。它的工作原理是计算机索引程序通过扫描文章中的每一个词,对每一个词建立一个索引,指明该词在文章中出现的次数和位置,当用户查询时,检索程序就根据事先建立的索引进行查找,并将查找的结果反馈给用户。

    5)搜索引擎

    Lucene、Solr、Elastic Search

    2、为什么不用mysql做全文搜索

    1)数据类型

    • 全文索引搜索很好的支持非结构化数据的搜索,可以更好地快速所搜大量存在的任何单词非结构化文本;例如 Google、百度类的网站搜索,它们都是根据网页中的关键字生成索引,我们在搜索的时候输入关键字,它们会将关键字即索引匹配到的所有网页返回;还有常见的项目中应用的日志的搜索等,对于这些非结构化的数据文本,关系型数据库搜索不能很好的支持。

    2)搜索性能

    • 如果使用mysql做搜索,当数据库达到千万级别的时候,数据库进行模糊查询的时候就会很慢;如下面sql,进行全表扫描,效率就会很慢
    select * from player where user_name like '%xxx%';

    3)灵活的搜索

    • 如果我们想查出名字叫 james 的球员,但是用户输入了jame,我们想提示他一些关键字,如下图:

    4)索引的维护

    • 一般传统型数据库,全文检索都实现的很鸡肋,因为一般也没人用数据库存长文本字段,因为进行全文搜索的时候需要扫描整个表,如果数据量大的话即使对SQL的语法进行优化,也是效果甚微。即使建立了索引,但是维护起来也很麻烦,对于 insert 和 update 操作都会重新构建索引。

    5)适合全文索引引起的场景

    • 搜索的数据对象是大量的非结构化的文本数据。
    • 文本数据量达到数十万或数百万级别,甚至更多。
    • 支持大量基于交互式文本的查询。
    • 需求非常灵活的全文检索查询。
    • 对安全事务,非文本数据操作的需求相对较少的情况。

    3、常见的搜索引擎

    1)Lucene

    Lucene是一个java全文搜索引擎,完全用java编写。Lucene 不是一个完整的应用程序,而是一个代码库和API,可以很容易的用于向应用程序添加搜索功能。

    通过简单的API提供强大的功能:

    • 可扩展性的高性能索引
    • 强大、准确、高效的搜索算法
    • 跨平台解决方案

    Apache 软件基金会

    • 在Apache软件基金会提供的开元软件项目的Apache社区的支持。
    • 但是Lucene只是一个框架,要充分利用它的功能,需要使用java,并且在程序中集成Lucene。需要跟多学习了解,才能熟练使用。

    2)Solr

    Solr 是一个机遇Lucene 的Java库构建的开源搜索平台,它以用户友好的方式提供Apache Lucene的搜索功能。它是一个成熟的产品,拥有强大而广泛的用户社区,它提供分布式索引,复制,负载均衡查询以及自动故障转移和恢复。如果它被正确部署然后管理的好,它就能够成为一个高度可靠,可扩展且容错的搜索引擎。很多互联网巨头,如:Netflix、eBay和亚马逊都使用Solr,因为它能够索引和搜索多个站点。

    强大的功能:

    • 全文索引
    • 突出
    • 分面搜索
    • 实时索引
    • 动态集群
    • 数据库集成
    • NoSQL功能和丰富的文档处理

    3)Elastic Search

    Elastic Search 是一个开源的,基于Apache Lucene库构建的Restful 搜索引擎;

    Elastic Search 是在Solr 之后几年推出的,他提供了一个分布式,多租户能力的全文搜索引擎,具有HTTP Web界面(REST

    )和无架构JSON文档,ElasticSearch的官方客户端库提供Java、Groovy、PHP、Ruby、Perl、Python、.NET和javascript;

    主要功能:

    • 分布式搜索
    • 数据分析
    • 分组和聚合

    应用场景:

    • 维基百科
    • 电商网站
    • 日志数据分析
    • BI系统
    • 站内搜索
    • 篮球论坛
    • 商品架构监控网站
    展开全文
  • 文本搜索引擎lucene

    2020-05-14 18:47:47
    Apache Lucene 是完全用Java编写的高性能,功能齐全的文本搜索引擎库。它是一项适用于几乎所有需要全文搜索的应用程序的技术,尤其是跨平台的应用程序。 2、Lucene、Solr、Elasticsearch之间的联系 Solr、Elastic...

    1、介绍

    Apache Lucene 是完全用Java编写的高性能,功能齐全的文本搜索引擎库。它是一项适用于几乎所有需要全文搜索的应用程序的技术,尤其是跨平台的应用程序。

    2、Lucene、Solr、Elasticsearch之间的联系

    Solr、Elasticsearch都是Lucene实现的产品。Solr功能相对于Elasticsearch更强大,但Elasticsearch的实时搜索更强。

    3、常见的数据结构有哪些?

    结构化数据: 用表、字段表示的数据。每个字段都是固定结构

    半结构化数据: json、xml 、html。每个属性都是不确定的结构

    非结构化数据: 文本、文档、图片、音频、视频等没有固定结构的

    结论:

    ​ 数据库只适合查询结构化数据。互联网初期,数据都是存储在数据库,对一些文本数据的检索,我们一般使用where text like ’%胡桃七子%‘,因为like只有右匹配才会走索引,所以数据量大时,这样查询会很慢。所以便有了全文检索技术的产生,而Lucene就是一个全文检索技术开发工具包。

    4、索引

    在这里插入图片描述

    如上图所示,本来是Hello world 对应Hello world两个词(图左所示),而lucene会通过分词器,对文本进行分词处理(图片没有把所有词统计),然后统计出现的次数,并记录出现的数据id。(图右所示)。从文本-词变成了词-文本。这就是lucene使用的索引方式,倒排索引。

    4.1索引创建步骤

    步骤标题描述
    1获取原始内容任何搜索应用程序的第一个步骤是收集在其上的搜索是要进行的目标内容。
    2构建文档下一步是建立从原始内容的搜索应用程序可以理解和容易理解的文件。
    3分析文档在索引过程启动,该文件是要分析作为其文本部分是一个候选索引。这个过程被称为分析文档。
    4索引文件一旦文档被构建和分析,下一步是将索引它们使得该文件可被检索

    5、数据结构单元

    document是lucene的基本逻辑单元。filed属性存储相关的字段。

    跟数据库相比,一个document便是一行数据,一个filed相当于列。

    这里只是简单介绍一下,后续会做更详细的介绍。。。

    6、总结

    lucene是一个工具包,所以相对于Solr和Elasticsearch更加灵活。如果是技术大牛,可以通过lucene实现更简洁、更高速的搜索引擎。

    欢迎扫描下面图片关注我的个人公众号,回复“资源”可以获取java核心知识整理和经典书籍

    在这里插入图片描述

    展开全文
  • 常见搜索引擎

    2017-01-06 18:25:43
    1. LuceneLucene的开发语言是Java,也是Java家族中最为出名的一个开源搜索引擎,在Java世界中已经是标准的全文检索程序,它提供了完整的查询引擎和索引引擎,没有中文分词引擎,需要自己去实现,因此用Lucene去做一...

    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写的开源搜索引擎.

    展开全文
  • 要了解SEO,你需要知道搜索引擎的架构。它们都包含以下主要组件:蜘蛛 -类似浏览器的程序,下载的网页。履带 -程序自动跟随每个网页上的所有链接。索引器 -一个程序,分析网页的蜘蛛下载和履带式数据库 - 结果...
  • 正文一:Full Text Search Engines vs. DBMS 发表于2009年 ...不知道大家没有想过一个问题:数据库服务也支持全文搜索,但我们为什么要用全文搜索引擎! 如果说是全文搜索引擎更快或者性能更好,那为什么呢?我们
  • 全文搜索引擎知识点

    2021-03-25 23:55:40
    什么是全文搜索引擎? 何为搜索,何为全文搜索 常用的搜索网站,比如百度,谷歌 数据的分类 ​ 结构化数据:指具有固定格式或有限长度的数据,如数据库,元数据等 ​ 对于结构化数据,我们一般都可以通过关系型...
  • 全文搜索引擎

    2016-02-17 17:10:32
    Lucene的开发语言是Java,也是Java家族中最为出名的一个开源搜索引擎,在Java世界中已经是标准的全文检索程序,它提供了完整的查询引擎和索引引擎,没有中文分词引擎,需要自己去实现,因此用Lucene去做一个搜素引擎...
  • 百度百科中的定义:全文搜索引擎是目前广泛应用的主流搜索引擎。它的工作原理是计算机索引程序通过扫描文章中的每一个词,对每一个词建立一个索引,指明该词在文章中出现的次数和位置,当用户查询时,检索程序就根据...
  • DBMS 发表于2009年正文二:Elasticsearch — A High-Performance Full-Text Search Engine 发表于2016年不知道大家没有想过一个问题:数据库服务也支持全文搜索,但我们为什么要用全文搜索引擎! 如果说是全文...
  • 全文搜索引擎是目前广泛应用的主流搜索引擎。它的工作原理是计算机索引程序通过扫描文章中的每一个词,对每一个词建立一个索引,指明该词在文章中出现的次数和位置,当用户查询时,检索程序就根据事先建立的索引进行...
  • 全文搜索引擎 ElasticSearch 入门教程

    千次阅读 2017-08-18 11:01:46
    全文搜索属于最常见的需求,开源的 ElasticSearch (以下简称 Elastic)是目前全文搜索引擎的首选。 它可以快速地储存、搜索和分析海量数据。维基百科、Stack Overflow、Github 都采用它。
  • 什么是全文搜索引擎

    千次阅读 2020-10-23 10:03:49
    常用的搜索网站,比如百度,谷歌,必应 数据的分类 ...对于非结构化数据,也即对全文数据的搜索主要两种方法:顺序扫描法,全文搜索法 顺序扫描 按字面意思,我们可以了解它的大概搜索方式,就是
  • 搭建Sphinx全文搜索引擎

    千次阅读 2017-12-22 13:27:40
    目前,全文搜索引擎主要三种: Lucene系, 包含solr 和 elasticsearch,Java支持的很好; sphinx,c++开发, 简单高性能, Xapian,c++开发, 国内的 xunsearch 基于XapianSphinx是开源的搜索引擎,它支持英文的全文...
  • 本系统是基于lucene框架开发的全文搜索引擎,能实现txt、doc、pdf、excel、ppt等常见文档的全文检索,可以直接部署到tomcat下即可运行,需要研究lucene或实际应用lucene框架的朋友,欢迎下载。
  • 相关主题:搜索引擎优化常见搜索引擎百度搜索引擎优化搜索引擎的优化seo搜索引擎优化重庆搜索引擎优化搜索引擎优化技术北京搜索引擎优化上海搜索引擎优化搜索引擎排名优化随着搜索引擎营销越来越被人熟悉,越来越...
  • 开源的全文搜索引擎

    千次阅读 2019-07-08 14:06:24
    Lucene的开发语言是Java,也是Java家族中最为出名的一个开源搜索引擎,在Java世界中已经是标准的全文检索程序,它提供了完整的查询引擎和索引引擎,没有中文分词引擎,需要自己去实现,因此用Lucene去做一个搜素引擎...
  • ElasticSearch搜索引擎常见面试题总结

    万次阅读 多人点赞 2021-04-10 22:12:52
    Elasticsearch 是基于 Lucene 的 Restful 的分布式实时全文搜索引擎,每个字段都被索引并可被搜索,可以快速存储、搜索、分析海量的数据。 全文检索是指对每一个词建立一个索引,指明该词在文章中出现的次数和位置...
  • 全文搜索属于最常见的需求,开源的 Elasticsearch (以下简称 Elastic)是目前全文搜索引擎的首选。Elastic 的底层是开源库 Lucene。但是,你没法直接用 Lucene,必须自己写代码去调用它的接口。Elastic 是 Lucene ...
  • 全文搜索属于最常见的需求,开源的Elasticsearch(以下简称 Elastic)是目前全文搜索引擎的首选。 它可以快速地储存、搜索和分析海量数据。维基百科、Stack Overflow、Github 都采用它。 Elastic 的底层是开源库...
  • 搜索引擎

    万次阅读 2017-09-06 12:00:45
    Baiduspider常见问题解答什么是BaiduspiderBaiduspider是百度搜索引擎的一个自动程序,它的作用是访问互联网上的网页,建立索引数据库,使用户能在百度搜索引擎中搜索到您网站上的网页。Baiduspider的user-agent是...
  • 内容独特 – 百度搜索引擎喜欢“独特”的内容。 主体突出 – 切不要出现网页主体内容不突出,而被搜索引擎误判为空短页面不抓取。 内容丰富 – 精彩的文案和适当的图文搭配,让网站更加充实才是SEO优化的重点。 广告...
  • 搜索引擎是什么? 是指根据一定的策略,运用特定的计算机程序从互联网上搜集信息,在对信息进行组织和处理后为用户提供检索服务,将用户检索相关的信息展示给用户的系统。 搜索引擎的优化就是SEO优化。 搜索引擎...
  • [搜索引擎友好之路]是我准备写的一本书,现在大部分网站都丰富的内容,但是他们为了得到流量去尝试那些搜索引擎作弊方法,往往是一时得到好处,最后被搜索引擎屏蔽。我们倡导的与搜索引擎友好的优化方式就是试图更...
  • 登录搜索引擎失败的常见原因: 1、使用框架: 框架内的内容通常不在搜索引擎抓取的范围之内。 2、图片太多,文本太少 3、提交页面指向另一网站 搜索引擎可能完全跳过这个页面 4、提交太过频繁 5、网站关键词...
  • 您可以在您的网站中创建一个纯文本文件robots.txt,在这个文件中声明该网站中不想被robot访问的部分,这样,该网站的部分或全部内容就可以不被搜索引擎收录了,或者指定搜索引擎只收录指定的内容。 robots....
  • 知识点:搜索引擎的概念理解、搜索引擎的分类、搜索引擎使用技巧、网站的概念、网站类型 1、搜索引擎 搜索引擎(Search ... 搜索引擎的种类:搜索引擎包括全文索引、目录索引、元搜索引擎、垂直搜索引擎、集合...
  • 全文搜索引擎Elasticsearch入门教程

    万次阅读 2018-01-05 00:00:00
    全文搜索属于最常见的需求,开源的 Elasticsearch (以下简称 Elastic)是目前全文搜索引擎的首选。它可以快速地储存、搜索和分析海量数据。维基百科、Stack Overflow、Github 都采用它。Elastic 的底层是开源库 ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 70,385
精华内容 28,154
关键字:

常见的全文搜索引擎有