第五章索引
本章涵盖了
•设计模式索引文件
•在schema.xml定义字段和字段类型
•使用结构化数据的字段类型
•处理更新请求,提交和原子更新
•管理xml索引设置
在第三章,我们学习了如何Solr发现文档使用一个反向索引,在其最简单的形式是一个字典的条款和文件的列表,每个词。Solr使用这个索引匹配的术语在用户查询与文档中发生。在这一章中,我们将学习如何Solr流程文档建立索引。索引文件是文本分析的一个关键因素。在这一章中,我们将关注索引过程和非文本字段,保存详细的文本分析,直到第六章讨论。
在本章结束时,你就会知道如何在Solr索引文档,你就会理解重要概念如字段,字段类型和模式设计。作为先决条件,本章将更容易通过如果你有Solr服务器在本地运行示例,我们在第二章。你仍然能够跟随大多数例子运行Solr,如果你喜欢阅读这一章,然后回来做实践活动。
5.1。微博搜索应用程序示例
在本章和下一篇文章中,我们将设计和实现一个索引和搜索文本分析解决方案从流行的社交媒体网站如Twitter微博内容。我们使用微博作为短的通用术语,非正式的消息和其他媒体,人们在社交网络上与彼此分享。微博是微博的例子在Twitter、Facebook帖子,并在Foursquare签到。在这一章中,我们将定义字段和字段类型代表微博在Solr和学习如何增加Solr文档。
在第六章中,我们将学习如何使用内置Solr做文本分析微博内容的工具。让我们开始通过查看文档的类型我们将使用在这个示例中,用户可能想要搜索它们。
5.1.1。代表内容搜索
首先,表5.1显示了一些字段从一个虚构的微博,我们将使用在这一章,了解在Solr索引文件。即使你不感兴趣分析社交媒体内容,通过这个例子中吸取的教训对于大多数搜索应用程序具有广泛的适用性。
表5.1。一个虚构的领域
Solr索引中的每个文档的字段,每个字段都有一个特定的类型,确定如何存储,搜索和分析。在表5.1中,有八个领域我们微博的文档。[1]想想用户可能会发现微博使用这些字段。我们认为screen_name、类型、时间戳、朗,和文本字段是好候选人使用从搜索的角度来看,因为它们包含的信息,一个典型的用户可以使用它来构建一个查询。例如,你可以想象一个用户想要看到所有的英语微博(lang:en)从特定用户(screen_name:thelabdude)后发生的特定日期(时间戳:[2012 – 05 – 01 t00:00:00z *))。
你可以索引所有这些字段,但是如果你开发一个大规模的系统,以支持数以百万计的文档和查询量高,你只想包括将由您的用户搜索的字段。例如,Twitter user_id字段是一个内部标识符,不太可能用户会想在这一领域的搜索。一般来说,每个字段增加索引的大小,所以你应该只包括字段,为用户带来价值。
favorites_count字段的数量最爱的作者推,推不收藏的数量。这个字段是有趣的因为它有有用的信息从用户界面的角度来看,但似乎并不好候选人作为一个参数为一个搜索查询。我们将解决如何处理这些display-oriented字段在5.2节讨论存储与索引字段。
现在,让我们想想用户可能建立一个查询使用这些字段,因为这将帮助我们决定如何表示这些字段在我们Solr索引。图5.1描述了一个虚构的搜索表单根据领域例如微博搜索应用程序。每个字段从搜索的角度,我们确定是有用的表示形式。这是一个关键在设计你的搜索应用程序,您需要考虑用户如何将搜索特定字段的索引;,这将有助于确定如何在Solr中定义的字段。
图5.1。虚构的web表单使用screen_name寻找微博,类型,郎朗,时间戳和文本字段。
现在我们有一个概念性的理解领域我们的示例应用程序,并了解用户将如何使用这些字段搜索文档。接下来,让我们得到一个高级的理解如何添加文档Solr。
5.1.2中所述。Solr索引过程的概述
在高级别上,Solr索引过程最后三个主要任务:
1。原生格式的文档转换成Solr支持的格式,如XML或JSON。
2。将文件添加到Solr使用定义良好的接口之一,典型的HTTP POST。
3。配置Solr转换应用于文档中的文本索引。
Solr索引文档支持多种格式,包括XML、JSON和CSV。在图5.2中,我们选择XML由于其自描述的格式很容易理解。下面是我们的示例推会使用Solr的XML格式。
注意,每个字段表示的XML和语法很简单,你只需要为每个字段定义字段名称和值。你没有看到任何关于文本分析或字段类型。这是因为您定义字段是如何分析的模式。如图5.2所示的xml文档。
回忆在第二章,我们所讨论的Solr提供了一个基本的基于http的接口,所有的核心服务,包括document-update服务添加和更新文档。左上角的图5.2中,我们为例描述发送XML推在Solr中使用HTTP POST document-update服务。我们将详细说说如何添加特定的文件类型,如XML、JSON和CSV在之后的章节。现在,认为document-update服务是一个抽象组件来验证文档中每个字段的内容,然后调用文本分析过程。分析了每个字段后,产生的文本添加到索引,因此可用于搜索文档。
我们将花更多的时间在5.5节索引过程是如何工作的。索引过程的高级概述就足够了,因为我们需要关注更多的基本概念。具体来说,我们需要了解Solr使用模式。图5.2所示的xml索引过程。
这一模式。xml文件定义了字段和字段类型。对于简单的应用程序,这个字段来搜索及其类型可能是显而易见的。一般来说,它可以帮助做一些预先计划你的模式。
5.2。设计模式
微博搜索应用程序与我们的例子,我们鸽子在和定义一个文档是什么和我们想要的字段索引。在实践中,这一过程并不总是显而易见的一个真正的应用程序,所以它可以帮助做一些预先设计和规划工作。
在本节中,我们了解搜索应用程序的主要设计考虑。具体来说,您将了解回答以下有关你的搜索应用程序的关键问题:
•什么是在你的索引文档?
•每个文档惟一确定的怎么样?
•你可以搜索文档字段用户?
•应该显示哪些字段,用户在搜索结果?
让我们开始通过确定适当的粒度的文档在搜索应用程序中,因为这影响你如何回答另一个问题。
5.2.1。文档的粒度
确定你Solr索引的文档应该代表驱动整个schema-design过程。在某些情况下很明显,例如我们推例子;文本内容通常是短暂的,所以每个tweet将一个文档。但是如果内容你想指数大,如技术计算机的书,你可能想要把一个大文档的部分为索引单位。关键是要考虑你的用户想要看到的搜索结果。让我们看一个不同的例子来帮助你思考什么是文档索引。
想象寻找一个网站,卖“文本分析”技术的计算机书籍。如果该网站每本书治疗作为一个单独的文档,用户将看到Solr在行动在搜索结果中,但需要通过目录或索引页找到特定的地方发生在书中“文本分析”。在图5.3中,左侧图像描述了搜索结果看起来如何当一个整本书索引作为一个单独的文档。
图5.3。比较搜索结果当索引整本书作为一个单独的章节文件和索引文件
如果网站对待每本书的个别章节,索引中的文档,然后搜索结果可能显示用户“文本分析”一章Solr行动结果前,可以看到右侧的图5.3。因为文本分析是一个核心概念搜索,然而,大多数在本书的其他章节和其他搜索书籍将是高度相关的搜索结果中。太颗粒会因此压倒韦德通过用户提供太多的结果。
您可能还需要考虑内容的类型你索引,分裂技术的计算机书的章节似乎有意义但分裂一个虚构的小说章节似乎并不是个好方法。最后,这是你的选择是什么造就了一个文件在你的指数,但肯定考虑文档的粒度如何影响用户体验。一般来说,你想让你的文件尽可能细粒度不会造成用户错过了森林”
除了作为一个快速,我们应该注意,Solr提供了一个称为达到突出的特性,允许您突出长文档在搜索结果的相关部分。这是有用的,当你不能长文档分解成更小的单位,但仍然希望帮助用户快速导航到高度相关的部分大型文档。例如,我们可以使用高亮显示简短的文本片段周围“文本分析”这个词在任何文件包含这句话。我们讨论了突出在第9章的深度。
服务器托管,北京服务器托管,服务器租用 http://www.fwqtg.net
机房租用,北京机房租用,IDC机房托管, http://www.fwqtg.net
大家好,我是易安! 今天我们谈一谈MySQL中InnoDB存储引擎。InnoDB存储引擎作为我们最常用到的存储引擎之一,充分熟悉它的的实现和运行原理,有助于我们更好地创建和维护数据库表。 InnoDB体系架构 InnoDB主要包括了内存池、后台线程以及存储文件…