热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Solr简述及倒排索引用法介绍

本篇内容介绍了“Solr简述及倒排索引用法介绍”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下

本篇内容介绍了“Solr简述及倒排索引用法介绍”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

一、Solr简述

1、Solr是什么?

     Solr是一个Java开发的基于Lucene的开源搜索平台,其搜索技术核心是使用倒排索引,即通过关键字映射到对应的文档(value--key),与一般搜索用到的key--value不同。

     Solr内的资源存储是以文档Document为对象进行存储,文档的内容是由多个表示资源属性的Field构成的。Solr是将文档中的Field经过分词后作为索引,用二分法将关键字与排序号的索引进行匹配,进而查找到对应文档,提供高性能的搜索效率。每个文档都通过唯一的id字段来表示该文档。

2、为什么使用Solr?

    由于传统电商多数使用传统搜索,即传统搜索是从静态数据库中筛选出符合条件的结果,这种结果往往是不可变得、静态的。而通常电商系统中需要提供搜索功能,通过任意关键字搜索出匹配的结果。而这些任意的数据不可能是根据数据库的字段查询的,所以需要利用全文搜索工具提前对数据进行分词,然后通过分词的结果,根据分词搜索到对应的文档,向用户反馈搜索结果。而Solr就能通过倒排索引功能,技术,结合IKanalyzer中文分词器实现这样的搜索功能。

3、Solr、elasticsearch与Lucene三者联系与区别

(1)三者介绍

    Lucene是一套信息检索工具包,并不包含搜索引擎系统,它包含了索引结构、读写索引工具、相关性工具、排序等功能,因此在使用Lucene时仍需要关注搜索引擎系统,例如数据获取、解析、分词等方面的东西。

    Solr是一个有HTTP接口的基于Lucene的搜索平台,封装了很多Lucene细节,自己的应用可以直接利用HTTP GET/POST请求去实现搜索,进行维护修改索引。

    Elasticsearch也是一个建立在全文搜索引擎 Apache Lucene基础上的搜索引擎。采用的策略是分布式实时文件存储,并将每一个字段都编入索引,使其可以被搜索。

(2)联系与区别

    三者联系:solr和elasticsearch都是基于Lucene工具包做的一些封装。

    solr和elasticsearch的区别:

  • A. solr利用zookeeper进行分布式管理,而elasticsearch自身带有分布式协调管理功能;

  • B. solr比elasticsearch实现更加全面,solr官方提供的功能更多,而elasticsearch本身更注重于核心功能,高级功能多由第三方插件提供;

  • C. solr在传统的搜索应用中表现好于elasticsearch,而elasticsearch在实时搜索应用方面比solr表现好

二、倒排索引介绍

1、索引(index) 的定义

一个索引文件(index)包含了一连串的文档(Documents),一个文档(document)是由一连串fields(字段)组成,一个fields(字段)可以被分词成由一连串的term(单词/字符串)。

2、倒排索引

索引(index)存储单词(terms)的统计数据,为了使得基于term的检索效率更高。倒排索引是实现“单词-文档矩阵”的一种具体存储形式,通过倒排索引,可以根据单词快速获取包含这个单词的文档列表。

(1)倒排索引组成:主要由单词词典和倒排文件组成

    a. 单词词典:

        单词词典是由文档集合中出现过的所有单词构成的字符串集合。首先Solr的文档指的是代表以文本形式存在的存储对象,除了网页外,还包含Word,PDF,html,XML等不同格式的文件、甚至邮件,微博等都可以称之为文档。每个文档有自己唯一的文档ID。Solr经过分词器将文档中的Field分词后,将重复的单词去重,这些单词的集合就构成了单词词典。每个单词也有唯一的单词ID。

    b. 倒排文件

        倒排文件是存储倒排列表的物理文件,存储在磁盘中。倒排列表记载了出现过某个单词的所有文档的文档列表及单词在该文档中出现的位置信息、出现频率,每条记录称为一个倒排项,多个倒排项构成倒排列表。

(2)倒排索引原理

        首先要用分词系统将文档自动切分成单词序列。这样每个文档就转换为由单词序列构成的数据流,每个不同的单词有唯一的单词编号,同时记录下倒排列表(出现这个单词的文档ID,出单词该ID的文档出现的频率 ,出现的位置(文档第几个单词出现)),记录每个单词对应的“文档频率信息”(在几个文档这中出现过),在如此处理结束后,我们可以得到倒排索引。

        倒排索引存储结构如下图所示。

Solr简述及倒排索引用法介绍

    总结:倒排索引存储结构一般为:词项的字符串ID+词项的字符串+词项的文档频率+倒排列表(词项的文档ID+记录词项的频率信息+记录词项的位置信息)。倒排索引它记录的是词,和词所存在的文档id以及倒排列表。通过这种索引结构的存储方式,其查询速率可想而知。

“Solr简述及倒排索引用法介绍”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注编程笔记网站,小编将为大家输出更多高质量的实用文章!


推荐阅读
  • Web开发框架概览:Java与JavaScript技术及框架综述
    Web开发涉及服务器端和客户端的协同工作。在服务器端,Java是一种优秀的编程语言,适用于构建各种功能模块,如通过Servlet实现特定服务。客户端则主要依赖HTML进行内容展示,同时借助JavaScript增强交互性和动态效果。此外,现代Web开发还广泛使用各种框架和库,如Spring Boot、React和Vue.js,以提高开发效率和应用性能。 ... [详细]
  • 网站访问全流程解析
    本文详细介绍了从用户在浏览器中输入一个域名(如www.yy.com)到页面完全展示的整个过程,包括DNS解析、TCP连接、请求响应等多个步骤。 ... [详细]
  • 在PHP中如何正确调用JavaScript变量及定义PHP变量的方法详解 ... [详细]
  • 包含phppdoerrorcode的词条 ... [详细]
  • 本文详细解析了ASP.NET 2.0中的Callback机制,不仅介绍了基本的使用方法,还深入探讨了其背后的实现原理。通过对比Atlas框架,帮助读者更好地理解和应用这一机制。 ... [详细]
  • Spring 中 Bean 信息定义的三种方法探讨
    本文详细探讨了 Spring 框架中实现 Bean 信息定义的三种方法:基于 XML 配置、基于注解配置和基于 Java 类配置。每种方法都有其适用场景和优缺点。 ... [详细]
  • Hadoop的文件操作位于包org.apache.hadoop.fs里面,能够进行新建、删除、修改等操作。比较重要的几个类:(1)Configurati ... [详细]
  • 本文详细介绍了Java代码分层的基本概念和常见分层模式,特别是MVC模式。同时探讨了不同项目需求下的分层策略,帮助读者更好地理解和应用Java分层思想。 ... [详细]
  • Spring Boot 中配置全局文件上传路径并实现文件上传功能
    本文介绍如何在 Spring Boot 项目中配置全局文件上传路径,并通过读取配置项实现文件上传功能。通过这种方式,可以更好地管理和维护文件路径。 ... [详细]
  • Python 数据可视化实战指南
    本文详细介绍如何使用 Python 进行数据可视化,涵盖从环境搭建到具体实例的全过程。 ... [详细]
  • 本文介绍如何在 Android 中自定义加载对话框 CustomProgressDialog,包括自定义 View 类和 XML 布局文件的详细步骤。 ... [详细]
  • 从0到1搭建大数据平台
    从0到1搭建大数据平台 ... [详细]
  • 在JavaWeb开发中,文件上传是一个常见的需求。无论是通过表单还是其他方式上传文件,都必须使用POST请求。前端部分通常采用HTML表单来实现文件选择和提交功能。后端则利用Apache Commons FileUpload库来处理上传的文件,该库提供了强大的文件解析和存储能力,能够高效地处理各种文件类型。此外,为了提高系统的安全性和稳定性,还需要对上传文件的大小、格式等进行严格的校验和限制。 ... [详细]
  • 技术分享:使用 Flask、AngularJS 和 Jinja2 构建高效前后端交互系统
    技术分享:使用 Flask、AngularJS 和 Jinja2 构建高效前后端交互系统 ... [详细]
  • ### 优化后的摘要本学习指南旨在帮助读者全面掌握 Bootstrap 前端框架的核心知识点与实战技巧。内容涵盖基础入门、核心功能和高级应用。第一章通过一个简单的“Hello World”示例,介绍 Bootstrap 的基本用法和快速上手方法。第二章深入探讨 Bootstrap 与 JSP 集成的细节,揭示两者结合的优势和应用场景。第三章则进一步讲解 Bootstrap 的高级特性,如响应式设计和组件定制,为开发者提供全方位的技术支持。 ... [详细]
author-avatar
不可能爱你啊
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有