转载请标明出处。谢谢
永久链接: http://501565246-qq-com.iteye.com/blog/2090518
第一章Solr简介
本章内容:
数据由搜索引擎处理的特点
通用搜索引擎的用例
Solr的关键组件
选择Solr的理由
功能概述
与快速增长的技术,如社交媒体、云计算、移动应用程序和大数据,在性能上的挑战,这些都是激动人心的,。软件架构师所面临的主要挑战之一是在全球用户基础上处理海量巨大的消费和产生的数据,。此外,在线用户期望应用程序总是可用和即使响应的。解决可伸缩性和可用性需求的现代web应用程序中,我们看到越来越多的兴趣专业、非关系数据存储和处理技术,统称为NoSQL。这些系统有一个共同的设计模式匹配特定类型的数据存储和处理引擎而不是强迫所有数据使用once-standard关系模型。
换句话说,NoSQL技术优化解决一个特定类的问题为特定类型的数据。规模导致的需要混合架构组成的各种NoSQL和关系数据库,一去不复返了的日子放之四海而皆准的数据处理的解决方案。
这本书是关于Apache Solr,特定的NoSQL技术。Solr,正如它非关系弟兄,是为一个独特的优化类问题。具体来说,Solr是一个可伸缩的、便于部署的企业搜索引擎优化的搜索卷text-centric数据并返回结果按相关性排序。下面分解他的基本组成部分。
Scalable------ Solr尺度分配工作(索引和查询处理)多个服务器集群。
Ready to deploy ----Solr是开源的,很容易安装和配置,提供了一个预配置的例子来帮助你开始。
优化搜索- Solr是快速和可以执行复杂的查询次秒级的速度,通常只有几十毫秒。
大量的文件- Solr旨在处理索引包含数以百万计的文件。
Text-centric - Solr是优化搜索自然语言文本,如电子邮件、网页、简历、PDF文档和微博或博客等社会信息。
结果按相关度排序- Solr返回文档为基础的排名顺序每个文档是多么重要用户的查询。
在这本书中,您将了解如何使用Solr来设计和实现可伸缩的搜索解决方案。你将会学习和用例Solr支持的类型的数据。这将帮助您了解Solr融入现代应用程序的大局架构,Solr旨在解决这问题。
1.1。我为什么需要一个搜索引擎?
因为你看这本书,我们怀疑你已经知道为什么了你需要一个搜索引擎。而不是猜测你为什么考虑Solr,我们会使用合适的方式来回答你这个困难的问题,为了决定一个搜索引擎是否适合你。最后,它归结为了解您的数据和用户,选择一种有效的技术。让我们首先看的属性数据,搜索引擎优化处理。
1.1.1。管理text-centric数据
现代应用程序架构的一个特征匹配存储和处理引擎数据。如果你是一个程序员,你知道选择最好的数据结构基于你如何使用一个算法中的数据;也就是说,您不要使用链表你需要快速随机查找。同样的原则适用于搜索引擎。搜索像Solr的引擎优化处理数据表现出四个主要特点:
1。Text-centric
2。Read-dominant
3。面向文档的
4。灵活的模式
可能第五个特点是有大量的数据处理,即“大数据,“但我们的重点是让搜索引擎特别NoSQL技术。不用说,Solr可以处理大量数据。
尽管这些数据的四个主要特点,搜索引擎喜欢Solr处理有效,你应该认为它们是粗略的指导方针,而不是严格的规则。让我们挖每看到为什么他们重要的搜索。现在,我们将专注于高层概念,我们将进入“如何”在以后的章节。
Text-centric
毫无疑问你会遇到这个词非结构化用于描述数据的类型这是由一个搜索引擎。我们认为非结构化有点模糊,因为任何文本文档基于人类语言具有隐式结构。你能想到的非结构化从计算机的角度,认为文本流字符。字符流必须使用特定于语言的解析规则提取的结构和搜索,这正是搜索引擎。
我们认为text-centric更适合描述Solr处理的数据类型,因为搜索引擎是专门设计用于提取文本的隐含的结构到它的索引来提高搜索。Text-centric意味着文档的文本数据包含用户感兴趣的信息。当然,一个搜索引擎支持非文本数据,例如日期和数字,但它的主要力量是处理基于自然语言的文本数据。
中心部分章节是很重要的,因为如果用户不感兴趣的信息文本,搜索引擎可能不是最好的解决你的问题。考虑一个应用程序的员工创建旅行费用报告。每个报告都包含一个数量的结构化的数据字段,如日期、费用类型、货币和金额。在另外,每个费用可能包括一个notes字段,员工可以提供一个简短的费用的描述。这将是一个例子的数据包含文本,但不是text-centric,它不太可能,会计部门需要搜索笔记当生成月度费用报告。仅仅因为数据包含文本字段并不意味着数据是一个适合一个搜索引擎。
考虑您的数据是否是text-centric。是否考虑的主要问题中的文本字段数据包含用户想要查询的信息。如果是的,那么一个搜索引擎可能是一个不错的选择。您将看到如何解锁的文本结构使用Solr的文本分析能力在5和6章。
Read-dominant
另一个关键方面的数据,搜索引擎有效地处理数据read-dominant,因此为了有效地访问,而不是更新频繁。我们要清楚,Solr并允许您更新现有文档索引。认为read-dominant意味着文档阅读往往远远超过他们创建或更新。但这并不意味着你不能写大量的数据或你经常限制您可以编写新的数据。事实上,的一个关键接近实时的特性在Solr 4(NRT)搜索,你可以成千上万的索引文档每秒钟,让他们立即搜索”。
read-dominant数据背后的关键是,当你写数据到Solr,它的为了阅读和重读无数倍。认为一个搜索引擎被优化的执行查询(一个读操作),,而不是存储数据(一个写操作)。还有,如果你必须在一个搜索引擎更新现有数据通常,这可能表明一个搜索引擎可能不是你需求最好的解决方案。另一种NoSQL技术,如Cassandra,可能是一个更好的选择
你需要快速随机写入现有数据。
面向文档的
直到现在,我们已经谈到了数据,但是在现实中,搜索引擎使用的文档。在一个搜索引擎,一个文档是一个自包含的字段的集合,每个字段只有拥有数据和不包含嵌套的字段。换句话说,文档在搜索引擎像Solr平面结构和不依赖于其他文档。平坦的概念在Solr略有放松,在一个领域可以有多个值,不但是字段包含分支学科。你可以存储多个值在一个领域,但你不能窝字段
在其他领域。
,面向文档的方法在Solr的数据处理文档格式,如网页,博客,或PDF文档,但是建模归一化数据存储在关系数据库中?在这种情况下,您应该需要正规化数据分布在多个表成一个平面,独立的文档结构。我们将
学习如何处理这样的问题在第三章。
你也要考虑哪些字段必须存储在Solr和在你的文档应存储在另一个系统,如数据库。一个搜索引擎并不是存储数据的地方,除非是有用的搜索和显示结果;例如,如果您有一个在线视频的搜索索引,你不想在Solr中存储二进制视频文件。相反,大型二进制字段应该存储在另一个系统,如内容分布网络(CDN)。一般来说,你应该存储的最小集合为每个文档信息需要满足搜索需求。这是一个明确的的例子,不是治疗Solr一般数据存储技术;Solr的工作是发现感兴趣的视频,而不是管理大型二进制文件。
Flexible schema
搜索引擎数据最后的主要特征是,它有一个灵活的模式。这意味着在搜索索引文件不需要有一个统一的结构。在一个关系数据库中,表中的每一行都有相同的结构。Solr文档可以有不同的字段。当然,应该有一些字段之间的重叠在相同的索引文件,但它们不必是相同的。
想象一个搜索应用程序寻找房屋出租或出售。上市显然会分享等位置、数量的卧室和浴室的数量,但他们也会根据清单类型有不同的字段。房屋出售字段清单价格和年度房产税,而房子租金每月会有一个字段租金和宠物政策。
总之,搜索引擎一般和Solr特别是进行了优化处理数据有四个具体特点:text-centric read-dominant,面向文档的,和灵活的模式。总的来说,这意味着Solr不是一个通用的数据存储和处理技术。
拥有这样一个各种选择的要点是,存储和处理数据你没有找到一个放之四海而皆准的技术。搜索引擎擅长某些别人的东西,很可怕的。这意味着,在大多数情况下,你会发现这一点Solr互补关系和NoSQL数据库超过它取代他们。
既然我们已经讨论了Solr优化处理的数据的类型,让我们思考主要用例像Solr是专为搜索引擎。这些用例旨在帮助您了解如何不同于其他搜索引擎数据处理技术。
1.1.2。通用搜索引擎的用例
在本节中,我们看的事你可以去做一个搜索引擎。与我们的1.1.1节中讨论的类型的数据,使用这些指导方针,没有严格的规定。在我们进入细节之前,我们应该提醒你记住,好的卓越在搜索很高。现代用户习惯于等网络搜索引擎谷歌和必应被现代web-information需要快速和有效的服务。此外,最受欢迎的网站有帮助人们找到强大的搜索解决方案快速的信息。当你评估一个搜索引擎喜欢Solr和设计搜索解决方案,确保你把用户体验作为一个高优先级。
基本的关键字搜索
这一点显而易见指出,搜索引擎支持关键词搜索,这是它的主要目的,但值得一提的是,因为关键词搜索是最典型的用户将开始处理您的搜索方式的解决方案。这将是罕见的一个用户要填写一个复杂的搜索表单。考虑到基本的关键字搜索最常见的用户将与你的搜索引擎,它的原因此功能必须提供一个良好的用户体验。
一般来说,用户需要输入一些简单的关键字然后返回结果。这可能听起来像一个简单的任务匹配查询条件的文件,但考虑的几个必须解决的问题提供一个良好的用户体验:
•必须迅速返回相关的结果,在大多数情况下在2秒或者更少的时间返回。
•拼写校正是必要的,以防用户写错的一些查询条件。
•Autosuggestions保存按键,特别是对于移动应用程序。
•同义词的查询条件必须认可。
•包含查询术语的语言变体的文档必须匹配。
•词处理是必要的,也就是说,用户想要匹配所有文件单词或任何的单词短语。
•查询常用单词像“一”,“一个”,“的”和“必须处理正常。
•,如果结果不令人满意,应该返回top10结果或者更多的结果供用户选择。
正如您可以看到的,存在许多问题,使一个看似基本特征很难没有专门的方法实现。但与Solr等搜索引擎相比,这些功能,很容易实现。一旦你给用户一个强大工具来执行关键字搜索,您需要考虑如何显示结果。这给我们带来了我们的下一个用例:排名根据他们的相关用户的结果查询。
检索排序
搜索引擎是独立作为一种为一个查询返回“顶级”文档。在SQL查询到一个关系数据库中,一行匹配查询或者不,和结果基于一个或多个列进行排序。搜索引擎返回的文档进行排序降序排列的分数表示的强度匹配的文档查询。如何匹配计算的强度取决于许多因素,但总的来说更高的分数意味着文档更多相关查询。
排名文档的相关性是很重要的几个原因:
•现代搜索引擎通常存储大量的文档,经常数百万或数十亿的文档。没有排名文档与查询的相关性,用户可以成为超载的结果没有明确的导航方式。
•用户更熟悉和习惯的结果搜索引擎只使用一些关键字。用户是不耐烦和期望搜索引擎“做我的意思是,不是我说什么。“这是真正的搜索解决方案支持的移动应用程序,用户将进入短查询潜在的拼写错误和期望它简单的工作。
影响排名,您可以分配更多的重量,或提高,某些文件,字段,或特定条款。你可以提高结果的年龄对推动新文档搜索结果的顶部。您将了解排名在第三章的文件。
除了关键字搜索
与Solr等搜索引擎,用户可以输入几个关键字,为许多用户返回结果。,这仅仅是第一步的交互式会话
搜索结果给他们继续探索的能力。的主要用例之一搜索引擎来驱动一个information-discovery会话。频繁,用户不会确切地知道他们正在寻找什么,通常不知道什么信息包含在您的系统。一个好的搜索引擎可以帮助用户在他们狭窄信息需求
这里的中心思想是要从最初的查询,返回文档以及工具来帮助用户改进自己的搜索。换句话说,除了返回匹配的文档,你还返回工具,让用户了解下一步该做什么。例如,您可以分类搜索结果使用文档允许用户缩小他们的特性结果。这就是所谓的面向方面的搜索,Solr的主要优势之一。你会看到的一个例子在上雕琢平面的搜索房地产在1.2节。这方面都包含在在第8章。
不要使用一个搜索引擎……
让我们考虑一些用例中,搜索引擎也不会有用。首先,搜索发动机被设计成每查询返回一组文件,通常10 - 100。更多的文件相同的查询可以使用Solr的内置分页检索的支持。考虑一个查询相匹配的一百万个文档;如果你要求所有的文件回来一次,你应该准备好等待很长一段时间。查询本身可能会快速执行,但从基础索引重建一百万个文档结构将是极其缓慢的,就像引擎Solr字段存储在磁盘的格式它很容易创建一些文档,但它需要很长时间吗重建许多文档时产生的结果。
另一个用例中,您不应该使用一个搜索引擎是深度分析的任务需要访问大量的子集索引(除非你有很多的内存)。即使你避免之前的问题通过分页的结果,底层的数据结构搜索索引不是用于检索索引的很大一部分。
我们已经接触了这之前,但我们会重申,搜索引擎不是替换查询在文档之间的关系。Solr支持查询使用
27日亲子关系,但不支持导航复杂的关系结构与SQL是可能的。在第三章中,您将学习技术来适应关系数据使用Solr的平坦的文档结构。
同样, 至少Solr没有直接支持大多数搜索引擎文档级安全,。如果你需要细粒度权限文件,然后你必须
处理外部的搜索引擎。
现在,我们看到的数据类型和用例的搜索引擎是正确的(或错误)的解决方案,这是时间去探究什么Solr以及它如何在高水平。在下一节中,您将了解什么功能Solr提供以及它的方法等重要software-design原则与外部系统的集成,可伸缩性和高可用性。
相关推荐
学习Solr的第一步是从安装和配置开始,读者需要下载Solr的源码并进行配置。本书提供的源码链接允许读者获取到最新版本的Solr,从而学习到最新的技术。 在开始之前,读者应该熟悉一些基础的搜索概念,例如分词、索引...
基于arm64版本的docker-compose文件
台区终端电科院送检文档
埃夫特机器人Ethernet IP 通讯配置步骤
rv320e机器人重型关节行星摆线减速传动装置研发
气缸驱动爬杆机器人的设计().zip
56tgyhujikolp[
内容概要:本文档提供了基于OpenCV的数字身份验证系统的Python代码示例,涵盖人脸检测、训练和识别三个主要功能模块。首先,通过调用OpenCV的CascadeClassifier加载预训练模型,实现人脸检测并采集多张人脸图像用于后续训练。接着,利用LBPH(局部二值模式直方图)算法对面部特征进行训练,生成训练数据集。最后,在实际应用中,系统能够实时捕获视频流,对比已有的人脸数据库完成身份验证。此外,还介绍了必要的环境配置如依赖库安装、文件路径设置以及摄像头兼容性的处理。 适合人群:对计算机视觉感兴趣的研发人员,尤其是希望深入了解OpenCV库及其在人脸识别领域的应用者。 使用场景及目标:适用于构建安全认证系统的企业或机构,旨在提高出入管理的安全性和效率。具体应用场景包括但不限于门禁控制系统、考勤打卡机等。 其他说明:文中提供的代码片段仅为基本框架,可根据实际需求调整参数优化性能。同时提醒开发者注意隐私保护法规,合法合规地收集和使用个人生物识别信息。
内容概要:本文档详细介绍了Java并发编程的核心知识点,涵盖基础知识、并发理论、线程池、并发容器、并发队列及并发工具类等方面。主要内容包括但不限于:多线程应用场景及其优劣、线程与进程的区别、线程同步方法、线程池的工作原理及配置、常见并发容器的特点及使用场景、并发队列的分类及常用队列介绍、以及常用的并发工具类。文档旨在帮助开发者深入理解和掌握Java并发编程的关键技术和最佳实践。 适合人群:具备一定Java编程经验的研发人员,尤其是希望深入了解并发编程机制、提高多线程应用性能的中级及以上水平的Java开发者。 使用场景及目标:①帮助开发者理解并发编程的基本概念和技术细节;②指导开发者在实际项目中合理运用多线程和并发工具,提升应用程序的性能和可靠性;③为准备Java技术面试的候选人提供全面的知识参考。 其他说明:文档内容详尽,适合用作深度学习资料或面试复习指南。建议读者结合实际编码练习,逐步掌握并发编程技巧。文中提到的多种并发工具类和容器,均附有具体的应用场景和注意事项,有助于读者更好地应用于实际工作中。
这个数据集包含了日常步数统计、睡眠时长、活跃分钟数以及消耗的卡路里,是个人健康与健身追踪的一部分。 该数据集非常适合用于以下实践: 数据清洗:现实世界中的数据往往包含缺失值、异常值或不一致之处。例如,某些天的步数可能缺失,或者存在不切实际的数值(如10,000小时的睡眠或负数的卡路里消耗)。通过处理这些问题,可以学习如何清理和准备数据进行分析。 探索性分析(发现日常习惯中的模式):可以通过分析找出日常生活中的模式和趋势,比如一周中哪一天人们通常走得最多,或是睡眠时间与活跃程度之间的关系等。 构建可视化图表(步数趋势、睡眠与活动对比图):将数据转换成易于理解的图形形式,有助于更直观地看出数据的趋势和关联。例如,绘制步数随时间变化的趋势图,或是比较睡眠时间和活动量之间的关系图。 数据叙事(将个人风格的追踪转化为可操作的见解):通过讲述故事的方式,把从数据中得到的洞察变成具体的行动建议。例如,根据某人特定时间段内的活动水平和睡眠质量,提供改善健康状况的具体建议。
资源内项目源码是来自个人的毕业设计,代码都测试ok,包含源码、数据集、可视化页面和部署说明,可产生核心指标曲线图、混淆矩阵、F1分数曲线、精确率-召回率曲线、验证集预测结果、标签分布图。都是运行成功后才上传资源,毕设答辩评审绝对信服的保底85分以上,放心下载使用,拿来就能用。包含源码、数据集、可视化页面和部署说明一站式服务,拿来就能用的绝对好资源!!! 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、大作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.txt文件,仅供学习参考, 切勿用于商业用途。
nginx
资源内项目源码是来自个人的毕业设计,代码都测试ok,包含源码、数据集、可视化页面和部署说明,可产生核心指标曲线图、混淆矩阵、F1分数曲线、精确率-召回率曲线、验证集预测结果、标签分布图。都是运行成功后才上传资源,毕设答辩评审绝对信服的保底85分以上,放心下载使用,拿来就能用。包含源码、数据集、可视化页面和部署说明一站式服务,拿来就能用的绝对好资源!!! 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、大作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.txt文件,仅供学习参考, 切勿用于商业用途。
资源内项目源码是来自个人的毕业设计,代码都测试ok,包含源码、数据集、可视化页面和部署说明,可产生核心指标曲线图、混淆矩阵、F1分数曲线、精确率-召回率曲线、验证集预测结果、标签分布图。都是运行成功后才上传资源,毕设答辩评审绝对信服的保底85分以上,放心下载使用,拿来就能用。包含源码、数据集、可视化页面和部署说明一站式服务,拿来就能用的绝对好资源!!! 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、大作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.txt文件,仅供学习参考, 切勿用于商业用途。
模拟知识付费小程序,可流量主运营模式
什么是普通上传 调用接口一次性完成一个文件的上传。 普通上传2个缺点 文件无法续传,比如上传了一个比较大的文件,中间突然断掉了,需要重来 大文件上传太慢 解决方案 分片上传
英二2010-2021阅读理解 Part A 题干单词(补).pdf
2023-04-06-项目笔记-第四百五十五阶段-课前小分享_小分享1.坚持提交gitee 小分享2.作业中提交代码 小分享3.写代码注意代码风格 4.3.1变量的使用 4.4变量的作用域与生命周期 4.4.1局部变量的作用域 4.4.2全局变量的作用域 4.4.2.1全局变量的作用域_1 4.4.2.453局变量的作用域_453- 2025-04-01
微信小程序项目课程设计,包含LW+ppt
GP300单缸液压圆锥破碎机CAD().zip