搜索系统概述
[信息架构]
本文摘自:web信息架构
最终的搜索引擎基本可以了解世界上的一切内容,它总是能给你正确的答案。我们还有很长的一段路要走。—— 拉里.佩奇
搜索,更宽泛的说法是“信息检索”,它是相当广泛的、充满挑战的领域。本文也只是介绍其皮毛而已,我们只讨论搜索系统由哪些内容组成、何时实现搜索系统,以及如何设计搜索界面和显示搜索结果的一些实用建议。
1. 搜索引擎
表面上,搜索似乎很简单。寻找有“搜索”按钮的输入框,输入并提交你的查询,运气好,就会找到一些有用的结果。当然,在幕后有很多事情发生。搜索引擎程序对信息环境的内容进行索引,全部还是一部分?作为用户,你永远不会知道。通常,搜索引擎可以查找每个文档的全文,但也可以对每个文档相关的信息(例如,标题、受控词表述语等)进行索引,这取决于其配置方式。然后时搜索界面,你输入的内容会在索引中查询,如果顺利,就会返回与你查询相匹配的结果。
搜索引擎本身就是很大的主题,除检索和爬虫工具外,还有很多算法用于将你的查询字符串处理成软件可以理解的内容,并对这些结果排序。此外,还有各种界面:有些用于输入查询(包括简单的搜索框和由先进的自然语言驱动的界面,例如:Siri,而其他的用于现实结果(包括决定每条结果要显示什么,以及如何显示所有的结果)。让事情更复杂的是,可以改进查询的各种查询语言(例如,是否可以使用布尔运算符,例如AND、OR及NOT)和查询生成器(例如,拼写检查器),则可以改良查询字符串。
显然,有很多无法被看到的搜索。此外,你的查询本身同差也没有那么一目了然。你的查询来自何处?你心中感觉到有个缺口需要用信息填补,但有时候不知道该怎么表达要查找什么。搜索通常是迭代的——不止是因为我们有时候不喜欢检索的结果,而是因为我们需要多试几次才能找到正确的查询词。然后,你会和搜索界面进行交互,寻找简单的、类似Google的搜索框,或者如果你是“高级”用户,就会使用高级搜索界面。最后,你要与结果交互,希望快速确定哪些结果值得点击,哪些是可以忽略的,以及你是否需要回去尝试修改你的搜索。
搜索系统的基本解析2. 选择要索引什么
假设你已经选择了一种搜索引擎。哪些内容应该做搜索的索引?你可以让搜索引擎指向网站,告诉它给找到的每个文档的全部文字建立索引,它可以无所不包,而且可以迅速覆盖大量的内容。但是,对所有的内容建立索引不见得能为用户提供良好的服务。在充满了异构子系统和数据库的大型复杂环境中,你可能想让用户搜索各种技术报告或者员工目录,但不想让结果中夹杂其它信息。建立搜索区域(更多的同构内容)可以减少风马牛不相及的影响,让用户能够集中他们的搜索。
选择要让哪些内容可搜索不应受限于之选择正确的搜索区域。集合中的每个文档或者记录都有某种结构,不管是否用HTML这类标记语言还是数据库字段表示。反过来,这些结构会存储内容组件:内容片段或“原子”,通常比文档小。结构中的某些内容(例如,作者姓名)可以被搜索引擎使用,而其他部分(例如,每个页面底端的法律免责声明)可以被忽略掉。
确定搜索区域
搜索区域就是信息环境的子集,其索引和其余的内容是分开进行的。当用户搜索某一搜索区域时,他已经通过与网站的交互表明她对这个信息感兴趣。理想情况下,网站中的搜索区域会复合他的特定需求,而且结果是一种更好的搜索体验。通过剔除与用户需求无关的内容,用户应该可以获取更少、更相关的结果。
可以使用多种方式创建搜索区域,从物理上分割文档或者从逻辑上标记它们。选择网站组织方案的决策通常有助于确定搜索区域。但搜索区域是把双刃剑,通过搜索区域缩小搜索可以提高结果,但与它们交互时会增加复杂度。很多用户在开始搜索时就会忽略搜索区域,而是倾向于输入搜索全局的简单搜索。一些切割方法:导航vs.目标、为特定用户建立索引、按主题索引、索引最近的内容。
选择要建立索引的内容组件
正如提供对网站内容子集的访问很有用一样,让用户搜索文档的特定组件也很有价值。这样做就可以让用户检索出更具体准确的结果。如果你的文档有对用户没有特殊含义的管理性或其他内容组件,这些都可以被排除在搜索外。
左图:Yelp的企业列表中充满了各种内容组件,一些是可见的,一些是不可见的。右图:标题、评分和位置是为每个结果显示的内容组件。3. 搜索算法
搜索算法作为搜索引擎的核心其本质上是一种工具,搜索算法有很多,和其他的工具一样,特定的算法可以帮我们解决特定的问题。大多数搜索算法采用模式匹配方法,它们会将用户的查询与系统文档的全文索引进行比较,来寻找相同的文本字符串。找到匹配的字符串时,源文档就会被添加到搜索集合中。
有些算法可以返回很多具有不同相关性的结果,而有些算法只返回高质量结果。这两个极端的术语就是:查全率(Recall)和查准率(Precision)。这两项是逆相关的,需要决定如何平衡两者才是对用户最有利的。选择一种其算法偏向查全率或查准率的搜索引擎,或者配置引擎使其往其中一个方向靠近。
查全率(Recall)和查准率(Precision)除搜索算法外,还有很多方法会影响搜索结果,比如对用户通常不可见的查询生成器:拼写检查工具(Spell-checkers)、防止输入错误工具(Poka-yoke)、语音工具(Phonetic tools)、词干搜索工具(Stemming tools)、自然语言处理工具(Naturelanguage processing tools)、受控词表和叙词表(Controlledvocabularies and thesauri)
4. 搜索结果
当你在配置搜索引擎显示结果的方式时,需要考虑两个主要问题:对每个检索出的文档来说,要显示哪些内容组件?如何列出或分组这些结果?
给那些知道自己要什么的用户显示具有代表性的内容组件,如标题和作者,来帮助他们快速区分搜索的结果;那些不确定自己要什么的用户则可以从描述性的内容组件中受益,例如摘要或关键词,让他们对想要搜索的结果由一些了解。每个结果中要显示哪些内容组件取决于每个文档中可用的组件(内容的组织方式)和内容的使用方式。
Yelp iPad应用程序让用户可以选择查看搜索结果的不同方式:列表、地图上的位置或图片列出结果常用的方法有两种:排序(Sorting)和排名(Ranking)来展示。 比如,按照字母排序,按年表排序,按相关性,根据受欢迎程度,根据用户和专家的评价等。搜索结果可以按照搜索结果进行分组显示,也可以提供高级搜索来收缩结果范围。
华盛顿邮报(左)的默认列表顺序是按照反向时间顺序排列的,CENT也是如此 Forrester将“user experience”查询与“marketing leadership”这类角色和特定的日期范围结合起来5. 设计搜索页面
我们讨论的所有因素(要搜索什么、要检索什么、如何显示结果)都要在搜索界面中整合起来,最好让界面尽可能简单:给用户提供一个简单的搜索框和一个“搜索按钮”即可。值得一提的是,自动完成和自动建议两项技术非常重要,它们可以根据部分或者不完整的信息帮助用户确定可能的匹配,在某些情况下,它还根据系统的结构给用户提供一些仪式,通过让他们正确地从搜索框探索系统来创建更多智能搜索。
德国汉莎航空公司提供了与用户输入到出发和目的地搜索框中的前几个字符匹配的航班列表