开发人员如何快速定制化实现一个基于Solr的搜索引擎

Solr实现全文搜索

  • Solr
  • Apache Solr特点
  • 搜索引擎
  • 搜索引擎组件
  • 搜索引擎工作流程
  • 分词技术
  • 中文分词算法
  • 基于字符串匹配
  • 基于统计及机器学习的分词方式
  • IKAnalyzer
  • 部署Solr并安装IKAnalyzer
  • Solr分析功能
  • 修改managed-schema配置业务系统字段
  • 复制配置到容器
  • 重启容器
  • SpringBoot整合Solr
  • 创建搜索服务接口
  • 创建搜索服务提供者
  • 创建搜索服务消费者
 
开发人员如何快速定制化实现一个基于Solr的搜索引擎

文章插图
Solr
  • Solr是一个可扩展的,可部署,搜索,存储引擎,优化搜索大量以文本为中心的数据库Solr是开源搜索平台,用于构建搜索应用程序建立在Lucene(全文搜索引擎)之上Solr是企业级的,快速的和高度可扩展的,使用Solr构建的应用程序可以提供高性能,但是非常复杂Solr可以和Hadoop一起使用:由于Hadoop处理大量数据,Solr可以从大的数据源中找到所需信息.Solr不仅限于搜索,也可以用于存储.和其它NoSQL数据库一样,是一种非关系数据存储和处理技术
Apache Solr特点Solr是Lucene的JAVA API包装,使用Solr,就可以使用Lucene的所有功能
  • RESTful API: 要与Solr通信,可以使用RESTful服务与Solr通信,可以使用XML,JSON,CSV等格式的文件作为输入文档,并以相同的文件格式获取结果
  • 全文搜索: Solr提供了全文搜索所需的所有功能:令牌,短语,拼写检查,通配符,自动完成
  • 企业准备: 根据企业或组织的需要,Solr可以部署在任何类型的系统:独立,分布式,云
  • 灵活可扩展: 通过扩展Java类并进行相关配置,可以定制Solr组件
  • NoSQL数据库: Solr可以用作大数量级的NoSQL数据库,可以沿着集群分布搜索任务
搜索引擎
  • 搜索引擎:搜索引擎是庞大的互联网资源数据库,如网页,新闻组,程序,图像等有助于在网上定位信息用户可以通过以关键字或短语的形式将查询传递到搜索引擎中来搜索信息,然后搜索引擎搜索其数据库并向用户返回相关链接
搜索引擎组件搜索引擎有三个组件:
  • Web爬虫: 一个收集网络信息的软件组件
  • 数据库: Web上的所有信息都存储在数据库中,包含大量的Web资源
  • 搜索接口: 这个组件是用户和数据库之间的接口,帮助用户搜索数据库
搜索引擎工作流程
  • 获取原始内容: 任何搜索应用程序的第一步是收集要进行搜索的目标内容
  • 构建文档: 从原始内容构建文档,让搜索应用程序可以很容易的理解和解释
  • 分析文档: 在索引开始之前,将对文档进行分析
  • 索引文档: 当文档被构建和分析后,下一步是对文档建立索引,以便可以基于特定键而不是文档的全部内容来检索该文档.索引类似于在书开始页或末尾处的目录索引,其中常见单词以页码显示,使得这些单词可以快速追踪,而不是搜索整本书
  • 用于搜索的用户接口: 当索引数据库就绪,应用程序就可以执行搜索操作.为了帮助用户进行搜索,应用必须提供用户接口,用户可以在用户接口中输入文本并启动搜索过程
  • 构建查询: 当用户做出搜索文本的请求,应用程序应该使用该文本准备查询对象,然后可以使该查询对象来查询索引数据库以获得相关细节
  • 搜索查询: 使用查询对象,检查索引数据库以获取相关详细信息和内容文档
  • 渲染结果: 当收到所需结果,应用程序应决定如何使用用户界面向用户显示搜索结果
分词技术
  • 分词技术: 搜索引擎针对用户提交查询的关键词串进行的查询处理后,根据用户的关键词串用各种匹配方法进行分词的一种技术
 
中文分词算法基于字符串匹配
  • 基于字符串匹配:即扫描字符串,如果发现字符串的子串和词相同,就算匹配这类分词通常会加入一些启发式规则:正向/反向最大匹配,长词优先等
  • 基于字符串匹配算法优点:速度快都是O(n)时间复杂度实现简单效果尚可
  • 基于字符串匹配算法缺点:对歧义和未登录词处理不好
  • ikanalyzer,paoding等就是基于字符串匹配的分词
基于统计及机器学习的分词方式