SolrInAction中文版第一章(四、五)(一)

2014-11-24 11:35:47 · 作者: · 浏览: 0

1.1 功能概览1. 4

最后,让我们再按照下面的分类,快速的过一下Solr的主要功能:

·用户体验

·数据建模

·Solr 4的新功能

在本书中,为你的用户提供良好的搜索体验会一直贯穿全书的主题。所以我们就从用户体验开始,看看Solr是如何让你的用户感觉到爽的。

1.4.1 用户体验类功能

Solr提供了一系列的重要功能来帮助你搭建一个易用的,符合用户直觉的,功能强大的搜索引擎。不过你需要注意的是Solr仅仅是提供了类REST风格的HTTP API接口,她并不提供搜索界面相关的UI组件和框架。你需要卷起袖子来写一个你自己的搜索界面UI,可以充分的利用以下列出的用户体验类功能:

·分页和排序功能

·分类检索功能

·自动补全功能

·拼写检查功能

·高亮命中结果功能

·地理位置查询功能

分页和排序功能

Solr 不会返回所有符合查询条件的结果。Solr在分页请求查询结果方面做了优化,每次只有最靠前的N个文档会被在请求第一页结果时返回。如果用户在第一页结果中没有找到想要的信息,那么可以通过很简单的API调用和请求参数获得后续页码的内容。分页功能对于两类关键的输出有帮助:1)结果返回的更快了,因为每次查询都只需要返回整个搜索结果中的一个很小的集合; 2)可以帮助你追踪到底有多少请求是针对更多页码内容的。这个指标可以反映出你的相关性得分的计算是否有问题。你会在第7章中详细的了解到分页和排序相关的内容。

分类检索功能

分类检索功能将搜索结果按照特性分类放到一个个小组中,这就为为用户提供了一个不断优化搜索关键字和浏览搜索结果的工具。在我们的房地产搜索例子中(图1.1), 我们看到了用户通过基本的查询关键字搜索到的结果被组织到了三个分类中:房屋特征,房型, 和列表类型。分类检索功能是Solr很受欢迎的强大功能之一,我们在第8章中会详细讨论分类检索。

自动补全功能

大多数用户都会期待你的搜索应用在输入的信息不完整的情况下仍然能够正确的返回结果。自动补全功能会根据系统索引文件中的文档内容在用户输入关键词的时候做出相应的自动填补建议。Solr的自动补全功能使得用户只需要输入少数几个字符就能得到一个根据这些输入字符推荐出来的查询词列表。这能大大降低用户输入错误查询词的几率,尤其是现在很多用户都会在移动设备上用小键盘输入搜索内容。

自动补全功能给用户提供了可选的查询词示例。回到我们的房地产搜索应用例子上,当用户输入”hig“时,Solr的自动补全功能会返回:highlands neighborhood 或者 highlandsranch 这样的可用查询词。我们会在第十章中详细的介绍自动补全功能。

拼写检查

在这个移动设备的时代和人人都很忙的时代,拼写检查功能显得尤为重要。用户在输入带有拼写错误的查询词时,仍然会期待搜索引擎能够优雅的自动处理掉这些小错误,返回给用户正确的查询结果。Solr的拼写检查支持两种基本的模式:

自动纠错模式:Solr可以在用户出现拼写错误的时候自动根据该词语在索引中是否存在而做出相应的纠错处理

”您要找的是不是…“功能: Solr也可以根据用户的输入,为用户建议一个更佳的输入方案,比如当用户输入”hilands“时,solr会建议用户”您要找的是不是 highlands

拼写检查功能在Solr 4中做了很大改进,我们会在第10章中做详细的讨论。

高亮命中结果功能

在搜索文本量比较大的文档时,你可以通过Solr的高亮命中结果功能对命中的内容进行高亮显示。这在文本内容很长的文档中很实用,用户可以借此功能很方便的在长长的文本内容中一眼找到命中的搜索内容部分。我们会在第9章中详细讨论高亮命中功能。

地理位置搜索功能

地理位置搜索是Solr 4 中的一个很棒的功能,Solr4 自建了对经度值和纬度值的索引支持, 可以对文档按照地理位置的远近做出排序。Solr 可以根据到地理位置上某一点(某一具体的经度和纬度上的一点)的距离,查找出相应的文档记录并对结果排序。在我们的房地产应用例子中,匹配出来的房源结果可以在互动地图上根据用户的缩放和中心店的移动做地理位置查询,按照与中心点的距离远近对查询结果排序。

Solr 4中另一个激动人心的功能是你甚至可以通过在地图上画出各种几何图形,比如多边形,根据不同形状之间的交集来做地理位置查询。这在你想要在查找房源的时候能够指定具体的街区地理范围时会很有用。我们会在第14章中讨论Solr的地理位置查询功能。

1.4.2 数据建模类功能

正如我们在第1.1节中讨论的那样,Solr对特定类型的数据处理做了优化。在本节中,我们列出了你在为搜索建立数据模型时可能会用到的一系列关键功能,包括:

· 值域的合并和分组功能

· 灵活的查询支持功能

· 连接功能

· 归集功能

· 从PDF和word等格式的文档中导入富媒体数据的功能

· 从关系型数据库中导入数据的功能

· 多种语言的支持

· 值域的合并和分组功能

虽然Solr要求处理的文档尽量的扁平化、非规格化,但还是允许你将多个文档按照大家共有的某种属性进行归组管理。值域分组,也被称为值域的合并,允许你在返回结果时除了可以返回一个个的文档之外还可以返回一个特定的文档分组。

关于值域分组功能的一个经典的例子就是邮件列表,我们可以把所有符合查询条件的同一主题的邮件都附在以最早引发会话的那封邮件开头的一个邮件列表里返回给用户。你将会在第11章中学到更多的关于值域分组的内容。

· 强大而灵活的查询支持功能

Solr提供了一系列强大的查询功能,包括:

· 支持与(and), 或(or),非(not)的条件逻辑

· 支持通配符匹配

· 支持日期和数字的范围查询

· 支持模糊的短语查询

· 支持模糊字串匹配

· 支持正则表达式匹配

· 支持功能查询

如果你对其中的一些名词不熟悉没有关系,我们会在第7章中深入讨论。

· 连接功能

在SQL中你可以使用JOIN来创建一个链接关系,将两张或多张表之间的数据通过一个称之为Foregn Key的共有属性连接起来。但是在Solr中,join操作更像是SQL中的子查询,只是你并不会通过链接文档之间的数据而创建新的文档。例如,通过Solr的join功能,你可以返回父文档符合查询条件的子文档。Solr连接功能在你需要拿到某条推特或是微博的所有评论时很有用,所有评论都是原文的子文档。我们会在第14章中详细讨论该功能。

· 文档归集

文档归集功能允许可以根据每个文档的描述将相似的文档归为一组。

这有助于避免在返回查询结果时返回很多内容很近似的文档结果。例如,如果你的搜索引擎是一个新闻应用,通过多个RSS链接来推送文章,那么你很可能会同时收到很多关于同一条新闻的报道。把这些内容差不多的报道都返回给用户显然不是一个好主意,此时你可以使用文档归集功能把这些类似的报导分成一组,选取一篇有代表性的报道返回给用户就妥了。归集技术会在第17章做详细讨论。

· 从PDF和word等格式的文档中导入富媒体数据的功能

在某些场合下,你可能需要处理一些已有的通用格式文档,比如PDF和微软word文档之类的,你需要这些文档也能被检索。用Solr的话要实现这一点很简单,因为Solr直接集成了ApacheTika项目,该项目几乎支持所有的流行文档格式。导入富媒体文档的相关问题在第12章中会详细讨论。

· 从关系型数据库中导入数