WEB设计中网站搜索信息论述

时间:2022-10-14 05:15:35

WEB设计中网站搜索信息论述

1站内搜索的技术难点

站内搜索是将符合搜索条件的数据显示出来,但这些数据不一定存在于数据库中,也可能存在于文件或者高速缓存中,并且很多时候不是用户查找的关键字直接在某条数据中存在,而是通过复杂的关联关系存在于另外一个地方[1]。这样的回答或许可以使大部分的用户放弃原先的想法,开始认为这将又是一个比较复杂的过程,也可能还有部分人会产生另外一个疑问:即使不通过复杂的关联查询,也可以在页面上提供给用户十分丰富的选项,用户通过这些选项“死找”对应的数据,不但可以使程序更加简化,也可以使结果的范围更加符合用户的需求。在网页中,用户的体验是至上的,便捷的功能也应当一应俱全,并且在很多时候,用户只是知道自己想要的结果的方向,却并不知道结果的具体内容和其他一些数据的关联关系,这就需要通过程序把这些数据挖掘出来,呈现给用户。这只是其一,现在编写程序都提倡面向对象,面向服务,过于具体的查询所带来的结果虽然在一方面提高了结果的准确性,但也在很大程度上制约了结果的智能性和服务的扩展性,也使得程序总体上更加面向过程。站内搜索在后台实现的技术难点概括起来主要有以下几方面:(1)准确程度。如果去问问题,却没有得到解决,那么整个站内搜索模块的存在是没有价值的。之所以把准确程度纳入技术难点的范畴,上面已经有了部分说明。一个健全的、成功的站内搜索模块不应当仅仅简单地提供符合条件的结果,还应当将这些结果进行处理和加工,并且安排结果的优先级别以及显示内容。(2)查询效率。对于网站开发人员来说,查询效率或许是最关心的,一个查询效率十分低下的站内搜索模块肯定是失败的。程序的效率不仅仅关系到用户的体验,也关系到整个系统的软件、硬件投入以及系统的稳定性,所以,查询效率的重要性是可想而知的。站内搜索查询效率的瓶颈除了物理的读写速度外,还有网站的海量信息,加之复杂的查询条件也给查询的效率增加了负担。(3)更新速度。查询模块的更新速度在很大程度上决定了这个系统模块的可用性,如果更新速度过慢,那么访问者将无法从站内搜索模块查询到最新的结果,这也不利于站内新的信息的传播。在这方面,最明显的例子就是新闻模块,新闻的时效性很强,过了某个时间点之后,可能就没有太大的利用价值了,这时候如果站内搜索的更新速度过慢,那么就会造成用户无法查询到最新的新闻信息,而旧的信息却不断地被更新、显示出来。选择将信息放入服务器高速缓存中,用户每次的查询并非直接从数据库中查找,而是从缓存中读取。如果网站中每更新一条记录,都更新缓存的话,服务器的负担也会比较大,所以,一般情况下选择制定一个时间间隔,将最新的内容更新到缓存中。但是,只要这个间隔存在,用户就不可能百分之百地查询到最新的实时信息。在一定的程度上,更新速度和查询效率是一对矛盾体,当提高更新速度的时候,就在一定程度上降低了查询效率,相反,如果过分提高查询效率,那么整个查询模块的更新速度将会更加缓慢。作为管理员和系统开发人员,就需要在这两者之间寻找一个平衡点,使更新速度和查询效率都在可以接受的范围之内[2]。(4)通用模块。通用模块问题会出现在一个网站中同时存在多个站内搜索子模块的时候,当创建站内搜索模块时,不管它是不是存在多个子模块,当然希望系统能够尽可能地重用代码,以提高整个系统的开发效率和可维护性,同时降低整个系统的维护成本。此时就需要为这些子模块建立一些通用模块,在建立通用模块的时候可以使用一些工厂模式等技术手段,以方便整个系统的开发和维护。但是,这些子模块的返回结果及其查询条件的差异性很大,所谓通用模块往往只是局限于底层的数据库连接、缓存读取和前台的部分显示上。对于整个站内搜索的重头戏——数据统计、整理、挖掘来说,都是些比较小的模块,诸如这样的问题,使整个网站的站内搜索的应用受到了很大的限制,所以一套完善的通用模块,在多个站内搜索子模块之间相当于催化剂。(5)用户体验。用户体验往往伴随的是前台复杂的页面设计和显示功能,这里要把用户体验列入技术难点的地方,并不只是在前台,还包括与之配合的后台的查询逻辑。还是拿问答模块来说,用户通过一组关键字,找到了对应的提问信息,可以把这些提问信息在页面上简单地罗列出来,然后让用户通过这个链接,打开提问页面,查看所有相关的回答以及最佳答案,但是这给用户带来了一定的麻烦——用户必须打开所有的相关页面,才能全面了解到想要的答案,这样的用户体验是很差的。这时候就需要将这些提问所对应的最佳答案一并显示出来,甚至提供更丰富的信息,这些功能不是传统的前台就能够完成的,还需要后台程序的配合,作为站内搜索模块的开发者,在面临迎合用户体验的同时,也必须考虑到效率问题,所以,用户体验在一定程度上也和查询效率构成了矛盾,作为开发人员必须在它们之间仔细斟酌,寻找一个平衡点。

2实现站内搜索的方案

2.1依靠站内实时数据实现

虽然使用站内数据库信息进行实时查询会大大降低整个系统的效率,但这并不意味着在任何时候都要放弃这种方式。例如,当一个站点刚刚建成,数据量和访问量都不是很大,但是又急于的时候,使用实时信息的查询可能会缩短开发周期,因而也不失为一种临时的替代方案。当然,从整个站点的开发和维护角度来看,即使出于无奈而必须使用实时的数据库信息查询,也应当注意以下几个方面:(1)尽可能减少查询频率。(2)尽可能减少关联查询。(3)尽可能缩小查询范围。(4)尽可能实现设计好“通用查询模块”,以便日后升级。(5)尽可能保持用户体验的一致性。(6)尽可能提供更加精准的答案。当然,这里仍然必须强调的是,这种方法是在网站信息量不是很大,同时访问量也不是非常大的情况下,才可以作为临时替代方案被使用,否则很可能给整个网站的性能带来巨大的影响。

2.2依靠站内搜索引擎实现

当数据查询可能给整个系统的性能带来影响的时候,就应该考虑使用站内的一套搜索引擎来完成站内查询的任务。站内搜索引擎的实现方式最常见,但是使用高速缓存配合一定的程序逻辑进行对数据的查询,出于进一步提高效率的考虑,其高速缓存的内容一般也可以由专门的数据库信息提供。使用“站内搜索引擎”很可能会给搜索的结果带来一定的延时,虽然可以在关键的数据更新的时候同时更新搜索引擎的数据库及其缓存,但是这种方法仍然会带来一定效率上的损失。所以,也可以让“搜索引擎”独立完成网页信息的抓取任务,将数据存放在一个数据库中,并更新到缓存中,供访问者查询。与其他的诸如百度、谷歌等大型搜索引擎不同的是,站内的搜索引擎是从站内的数据库中抓取数据,这也是站内搜索引擎的一大优势,它能够更加自主地收录信息。使用站内搜索引擎应当注意以下几个方面:(1)在更新速度和执行效率之间寻找一个平衡点。(2)当从数据库中直接收录数据的时候,确保一些受保护的信息不被收录,如用户不愿意公开的联系方式等,这一点是有一定难度的,因为收录的筛选逻辑必须和页面中保持一致。(3)有选择性和优先级地收录信息。(4)设计合理的存放收录信息的数据库结构。(5)设计一套高效的缓存更新方案。

2.3依靠第三方搜索引擎实现

使用第三方的搜索引擎完成站内搜索的任务是不可靠的,但是如果由于网站成本、开发周期、复杂程度等原因,不使用上述2种站内搜索的解决方案,抑或是上述2种解决方案不能完全满足站内搜索的需求,需要由外界提供的搜索引擎完成服务的话,那么使用第三方的搜索引擎也就是一个弹性比较小的选择了。使用第三方的搜索引擎时,需要注意以下几个方面:(1)由于使用第三方的搜索引擎,搜索结果所显示的格式是比较固定的,并且显示在第三方的平台上,对其内容是无法控制的。(2)第三方搜索引擎提供的结果相对简单,使用之前先考虑到这样做用户是否能够接受。(3)第三方搜索引擎能够提供比一般网站自身更稳定的服务,但是更新速度是无法控制的。(4)使用第三方搜索引擎需要使用一定的技巧,才能够使网站被更好、更多地收录,在这方面需要了解一些与搜索引擎相关的知识。(5)选择第三方搜索引擎意味着更多的非直接公开的信息将不能被收录。

3小结

本文介绍的3种解决方案都有其各自的优点和不足,所以在很多情况下,需要将它们综合利用。在应用的过程中,需要注意以下几个方面:(1)在条件允许的情况下,优先考虑站内搜索引擎。(2)站内信息的实时查询和站内搜索引擎尽量不要同时使用。(3)单纯依靠第三方搜索引擎是一个“无奈”的选择,有条件的话尽量不要单独使用它。(4)使用任何一种解决方案,都应当注意以上提到的各自的一些注意点,假如有一点不能做到或满足,就应该重新考虑是否真的有必要使用这种方式。

作者:尹衍林 单位:鸡西大学

上一篇:多元智能理论在网站设计中的实用性 下一篇:多媒体技术的网站图片综述