版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
I目前社会经济快速发展,尽管人们收入水平不断提升,但房价对大多数人来说仍然很高。人们在刚进入社会时都会选择租房,而面对海量的房源信息,很难从中快速找出自己需要的房源。传统搜房系统都提供了搜索服务,但没有考虑用户的个人兴趣偏好,不同的用户输入相同的关键词,往往返回相同的结果,在大量的结果中做出选择浪费了用户的时间和精力,无法满足用户个性化需求。系统在深入研究开源搜索引擎Elasticsearch和用户模型的技术上,设计并实现了一个具有个性化搜索引擎功能的房源搜索服务系统。整个系统在操作简单、界面友好和功能实用的基础之上给客户提供了方便且全面的房屋租售信息,使客户能够快速、准确地查到自己理想的的房源,给管理员提供了一个简单而有效的房源信息发布、管理、租赁平台。按照软件工程的思想,结合用户的实际需求,将房源搜索系统分为前台用户和后台管理员部分,前台用户系统分为用户登录、房源搜索、地图找房、预约看房和个人中心五个模块,后台管理员系统分为房源管理和预约管理两个模块,并在此基础上进行系统的设计与实现。主要创新和研究内容如下:基于Elasticsearch实现站内搜索引擎,包括基于聚合功能的房源统计功能和Suggest建议器的自动提示功能等;根据房源信息本体的特点,利用向量空间表示法实现用户模型,为个性化搜索提供模型支持;百度地图与Elasticsearch实现地图找房功能,包括基础的地图展示及百度位置服务(LBS)的应用。系统功能测试和性能测试的结果表明符合预期需求,在引入个性化搜索后为不同用户提供更加有效、智能的搜索结果,减少了用户的工作,有一定的实际应用价关键词:用户模型Elasticsearch搜索引擎个性化搜索百度地图ⅡAtpresent,thesocialeconomyisdevelopingrapidofhousinginformation,peoplefinditdifficulttofindthehousingsourcetheyneed.Traditionalhousesearchingsystemsprovidesearchserviceswusers'interestsandpreferreturnthesameresultsandcannotmeetthepersonalizedneedsofusers.ThesystemdesignsandimplepersonalizedsearchenginefunctiononthebasisofsourcesearchengineElasticsearcandcomprehensivehousingrentalandsalesinformateffectivehousinginformationreleasing,managing,rentingplatforadministrator.Accordingtotheideneedsofusers,thehousingsearchsystemisdividedintothefront-enhousingsearch,mapsearch,reservationviewingandpersonalcenterfivemodulesreservationmanagement.TsearchenginebasedonElasticsearch,includingElasticstothecharacteristicsofthehousingsourceinformationontology,theusermodelisimplementedbyusingvectorspacpersonalizedsearch.realizibasicmapdisplayandapplicationofbaidulocationservice(LBS).Ⅲneeds.Afterintroducisearchresultsfordifferentusers.Itreducesusers'workandhascertainprKeywords:UsermodelEla I 1绪论1.1研究背景与意义 1.2国内外研究现状 1.3主要研究内容 1.4组织结构 2系统关键技术2.1全文搜索技术 2.2用户模型技术 2.3开源搜索引擎Elasticsearch 2.4百度地图API 2.5本章小结 3系统需求分析3.1房源搜索系统的业务流程 3.2房源搜索系统的功能性需求分析 3.3房源搜索系统的非功能性需求分析 3.4本章小结 4系统设计4.1房源搜索系统的网络架构 4.2房源搜索系统的总体设计 4.3房源搜索系统的模块设计 V4.4房源搜索系统数据库的设计 4.5本章小结 5系统实现与测试5.1房源搜索系统的开发环境 5.2房源搜索系统的功能实现 5.3房源搜索系统测试 5.4本章小结 6总结与展望6.1全文总结 6.2展望 参考文献 1随着时代快速发展,特别是大中城市,虽然国家颁布了多部法规政策来限制房价过度上涨,但是效果有限,大部分人仍然无法承受高额的房价。加之,随着城市化进程的推进,大量人口进入城市,每年的毕业学生与进城务工人员带动了租房市场的增长。有数据表明2017年全国房屋租赁市场租金约为1.3万亿元[1]。在武汉,租赁住房比例约占全市总户数的四分之一。随着政府百万大学生留汉计划和全面放宽城市落户等政策的实施,未来租房需求将持续增加。互联网的发展给房屋租赁市场提供了新的交易渠道,超过50%的租户通过互联网搜索房源,60%的出租者经常在网上提供房源信息,可以说互联网已经成为最大的房屋出租平台[2]。随着大数据时代的到来,互联网信息继续快速增长。互联网用户如何利用互联网准确地发现和获取他们所需要的有效信息已经成为一个亟待解决的问题,同时也成为互联网产业的一个重要研究方向。目前用户从海量互联网数据中获取需要的内容常用做法是通过搜索引擎,这种搜索引擎是一种通用的搜索引擎。通过在互联网上收集数据,创建自己的数据库,当用户通过关键字搜索时提供给用户大量相关数据。互联网用户的快速增长带来了通用搜索引擎的快速发展。在这个过程中,出现了一些问题。如用户只需要特定类型的搜索结果,而通用搜索引擎返回的是数量大而全的搜索结果。这将导致通用搜索引擎的准确性下降。例如,对于经常浏览房源网页的用户,他们主要想购买房屋或出售房屋,并希望找到比一般页面更详细的信息,如位置,户型,价格和其他房源信息,而不是像百度等那样返回一般性介绍网页。垂直搜索引擎在这类问题上具有独特的优势,垂直搜索引擎只是搜索互联网资源当中的某一行业领域,返回给用户该领域信息,具有高精度和深度等特点[3]。房源信息属于一个专门的类别,需要专门收集房源数据信息,对其进行整理和存储,然后提供搜索服务。2但是,当用户使用传统搜索引擎时,搜索少量查询词。由于返回的结果没有根据用户的喜好排序,因此需要逐个过滤和浏览结果,这很难满足用户对准确和友好的结果集的要求[4];再者无论哪个用户输入查询词都得到相同的结果。但实际情况是不同的用户希望返回自己感兴趣的结果,因此传统的搜索服务需要结合用户兴趣实现个性化需求[5]。针对信息检索领域的问题,为不同用户提供个性化的搜索结果,是搜索引擎总的发展趋势[6]。它不仅能满足按用户关键字查询,还能返回个性化结果。本文结合房地产市场对房源信息的需求,探索性的实现了一个具有个性化搜索引擎功能的房屋搜索服务系统,同时在系统中基于百度地图直观展示指定区域的房源,实现用户根据地理位置寻找房源信息,提升系统的竞争力,更好的满足用户的体验。目前,垂直搜索引擎应用很多,涵盖了如机票、旅游、图书、音乐和视频等领域,国外发展较早,各个领域都有比较成熟的垂直搜索系统。国外一些比较有特点的垂直搜索领域有:SkyScanner是一款全球最大的机票航是网络上第一个以图搜图的图像搜索引擎[8]。TinEye支持用户本地图像上传和输入图片地址,分析和识别后在互联网上搜索相同的图像或者类似的图片。Music-Map是一款音乐领域的搜索引擎[9],可以输入歌手或歌名进行搜索,并可以记录和分析用户搜索内容,优先返回用户可能喜欢的歌手或歌曲。Twitter搜索引擎,它是一个社交网络与微博客服务,专注于微博搜索,每天会处理上亿次的网络搜索请求[10]。国内垂直搜索领域从最开始对国外的学习,例如百度识图、360识图学习TinEye,新浪微博学习Twitter等,结合国内用户实际需求也产生了一些独具特色的垂直搜索引擎。例如结合国内高度繁荣的电子商务产业而出现的一淘网,是一个促销性的购物指南搜索引擎,为用户提供高性价比的购物体验[1]。爱搜书网是全网最大的中文电子书搜索引擎,提供包括漫画、教科书等海量书籍的资源搜索[12]。随着用户对搜索结果的需求提高,垂直搜索的精度渐渐无法满足用户需求的增长。因此,研究和发展更智能和个性化的搜索引擎已成为未来的一种趋势。个性化3搜索的基础是收集和记录用户的上网行为,提取用户的个人信息如搜索内容、历史记录等,然后从这些信息中分析出关键字及其权重而建立起的用户兴趣模型[13]。国外一些比较有影响的个性化搜索引擎系统有:SPHINX系统由美国卡梅隆大学开发,系统跟踪并记录用户的个人信息,包括用户个人访问的网站地址、点击和收藏的页面等[14]。该系统具有高度的灵活性和针对性。Pei.MinChen等人提出了一种学习用户个性化信息并利用这些个性化信息查询的关键字表技术[15]。除了负责查询工作,系统还可以分析用户的行为,自动更新关键字列表并存储该信息。Websifter通过主动向用户提供一系列兴趣范围来优化查询,同时向多个搜索引擎发送请求以获得搜索结果[16]。还有以图论为基础的权重算法实现的个性化Persona搜索引擎只返回排在前面的部分网页搜索结果[17]。并且结果可以根据用户的需求来进行调整。国内的个性化搜索引擎起步较国外晚但也在快速发展并取得成果。特别是在电商平台,如淘宝,京东等,系统根据用户的历史购物情况分析用户的购物喜好,在用户搜索的过程中引入用户的个性化偏好信息,优先返回符合用户喜好的商品,而且不同的用户会有不同的搜索结果。DOLTRI-Agent是南京大学的潘金贵教授等研发出的一种个性化搜索系统[18]。该系统具有自适应学习功能,分析用户的历史行为来优化用户的搜索结果。针对不同的用户,得出不同用户的偏好,实现搜索结果个性对于房源搜索领域,国内也已经产生了很多该领域的信息搜索获取网站,例如搜房网,国内最大的房地产专业网站,已经具备了垂直搜索网站的大部分特点[19]。在网站的搜索引擎中,用户输入如位置、价格、小区、地铁等关键字来查找和筛选感兴趣的房产信息。垂直搜索引擎技术的使用使该网站成为房源信息数量最多和用户量最大的平台。该网站房源丰富,涵盖了新房、二手房等各种房源,数据量大。但是,它目前并没有提供基于不同用户兴趣偏好的个性化搜索。根据当前房地产业的发展现状和房源搜索需求,本文旨在利用当前较为先进的垂直搜索引擎技术实现个性化搜索,并基于百度地图实现地理位置寻找房源为主要服务内容的房源搜索系统。4本文的研究内容如下:(1)通过研究互联网上大量房屋租赁网站,收集网站数据,根据住房信息的特征,抽象出业务逻辑所需的数据模型,为房源搜索系统的设计提供数据支持。(2)研究了系统使用到的相关搜索引擎的工作原理及流程和用户模型技术。(3)对本系统进行了功能分析和非功能分析,结合用例图详细描述了主要的功能模块,在此之上进行总体设计和数据库设计。(4)实现房源搜索系统的各个模块功能,根据系统的模块的分析及设计对各模块进行编码实现、界面实现和优化改进。(5)最后测试系统,分析测试结果,并对系统进行了改进。实现了引入用户兴趣模型的个性化搜索引擎使用户更加感兴趣的结果排在靠前的位置,提供更有个性的结果。本文正文内容有六个章节,各个章节介绍如下:第一章为绪论。本章主要阐述了房源搜索系统课题的背景和意义、国内外搜索引擎相关研究现状、课题的研究内容以及论文的组织结构。Elasticsearch的工作流程和底层技术原理,以及实现个性化的基础用户模型技术等一些关键性技术。第三章是系统的需求分析。根据系统的业务流程,从系统不同的角色进行功能划分,主要包括房源搜索,地图找房、登录注册、预约看房和房源管理等模块功能,非功能需求则包括性能,安全和扩展性需求等。第四章是系统的设计。首先从整体上介绍了房源系统的网络架构、总体设计及功能模块,然后详细描述了本系统的五个关键模块:登录注册、房源搜索、地图找房、预约看房和房源管理各功能模块的详细设计,最后针对系统需求设计数据库的实体关系图和数据库表。第五章是系统实现和测试。介绍系统的开发环境,对房源系统设计中的五大功5能模块进行代码实现和效果展示,最后根据需求分析对房源搜索系统设计功能和性能测试,验证是否达到系统需求。第六章是总结与展望。对房源搜索系统的进行技术总结,并提出系统存在的问题和后续工作改进的方向。62系统关键技术全文搜索技术是搜索引擎的核心实现技术,而搜索引擎是全文搜索技术最广泛索引擎的工作流程是将搜索文档进行分词,然后对每一个词建立一个索引,形成倒排文件。当用户查询时,搜索程序会在倒排文件中查找,在查找的同时会计算每个关键词与文档的相关度等,然后根据相关度的大小对包含关键词的所有文档进行排要过程[21]。下面是开源搜索引擎Lucene对数据库中的数据进行索引创建和索引搜索的过程,如图2-1所示。图2-1创建索引和查询索引过程与通过文档编号查找关键词相反,倒排索引中存储的是关键字到文档的映射,可以7分为两个部分。(1)单词词典,也叫索引表,由不同索引词组成。每个索引项指向索引表示的具体含义,出现频次以及指向倒排链表的指针。(2)倒排链表,是一种文档集合,由索引词,以及索引词表示的信息构成。倒询关键词时,遍历倒排链表就可以得到相关文档。例如,对于文档1“我是中国人,我爱中华人民共和国”和文档2“中华人民共和国万岁”,通过搜索引擎分词器和语言处理器的处理,可以得到如图2-2的倒排索引结图2-2倒排索引结构图2322222375881111111词,然后获得相应的倒排列表,最后从倒排列表中获得文档编号。接下来涉及到对搜索结果如何进行排序的问题。8虽然通过倒排索引得到了想搜索的文档,但是如果满足需求的文档数量非常多,则需要根据查询的相关性对查询结果进行排序。相关性越高,排名越靠前,方便用有两个因子影响影响相关关系之间的排序:词频(TermFrequency,TF)和逆文档频率(InverseDocumentFrequency,IDF),分别表示的是文档中某个单词出现的次数和文档集合中出现该单词的文档数。词频越高,相关度就越高。文档数越多,相关度越低。如公式2-1:公式2-1中,score是相关度分数。norm表示字段长度正则值,字段越短,字段的权重越高。boost默认是1,用户可以指定权值。在很多时候,我们想要改变默认的排序规则,根据对多个字段进行综合评估,得出一个最终的排序,这时就需要用到function_score查询,它允许为每一个与查询匹配的文档应用一个函数,以达到改变甚至替换相关度分数的目的。Elasticsearch给我们提供了以下函数,无需自己实现。random_score使用一个不同的随机分数来为每个用户对结果排序,但对同一个用户来说,看到的顺序始终是相同的。Decayfunctions—衰减函数拥有三种模式:线性函数linear,指数函数exp,高斯函数gauss,以某个字段的值为标准,距离某个值越近得分越高。2.2用户模型技术现在的搜索系统除了能查询到含有关键字的相关文档,还需要对不同用户的需9用户模型挖掘首先需要搜集用户相关数据,完成用户数据分析。可以使用两种中,显示的方法通常是在用户登录系统后,进入个人中心设置一些需求信息,比如价格、户型、面积等的信息。这种方法获得的信息比较直接,也比较有效。但会花费用户更多的时间,用户在使用搜索引擎时只是想得到搜索结果,显示的方法用户不一定配合。隐式的方法不需要用户参与互动,但需要系统去记录用户的操作和活动,然后定期分析出用户的需求。这种方法是自动进行的,用户不会察觉到,可以用户模型的建立一般会将两种方法结合,在系统开始时可以通过用户做一个包括户型,面积,价格,楼层,所在小区等的选择,了解用户对房源信息的需求。用户选择完答案后,系统初始化该用户的兴趣模型。此外,系统还会记录用户的关键法直接将提取的新信息直接添加到用户模型中,并不会删除原有信息,使模型规模不断增加,浪费了储存空间。在此基础之上的权重调整的信息增补,不断调整新旧信息的权重值,删除权重减小的旧信息,减少空间上的占用;一类是遗传算法,根不断的交叉和变异来寻找最佳解决方案;另一类是神经网络技术,随着用户喜好的用户模型的表示主要有以下几类方法:基于本体表示法,向量空间表示法,关键词表示法和基于神经网络表示法。本文主要应用了基于本体表示法和向量空间表示法,下面对其进行概述。基于本体表示法需要对查询系统所涉及的领域建立一个本体模型[30]。本体是对领域实体的抽象,强调实体间的关联,通常采用具有上下结点的树的形式表示,每个结点表示一个实体,上层结点与下层结点之间可能存在各种关系,比如包含和部分关系等。这种表示方式的优势是能够实现知识的共享和重用。基于向量空间的方法是目前表示用户模型的常用方法[31]。它由用户模型中的所有关键词及其权值组成的一个n维向量,对于查询词集合{qi,q2,…,qn}及其权重{w1,W2,…,Wn}可以表示为{(q1,w1),(q2,W2),…,(qn,Wn)}。这种表示方法简单直接,并且向量形式便于计算。Elasticsearch是用Java开发的当前流行的企业级搜索引擎,底层封装了Lucene来实现所有索引和搜索功能,提供RESTful接口来简化Lucene[32]。用户可以在系统Elasticsearch服务器具有分布式的特性,它既可以部署到一台服务器上独立工作,也可以部署到多台服务器上,增加存储数据的容错能力和高可用性[34]。多台服务器组成一个集群(cluster),集群中的每台服务器称为节点(node),在创建索引时,将得到的结果整理后返回。本房源系统通过Elasticsearch提供的JavaAPI完成了房源的搜索功能。Elasticsearch操作比较简单,可以直接通过函数来实现,比如常见的增加,删除,修改,查询操作等。但其主要优势是实时搜索[36],没有关系型数据库事务等特点,不能保证数据并发操作时的正确性,并不能完全取代传统的关系型数据库。现代人们出行都离不开地图,通过地图,可以方便展示房源信息,在房源系统中引入了百度地图。百度地图提供了定位,查询,路线,搜索,周边环境等功能与服务[37]。本系统涉及到的百度地图的基本服务有地图浏览和LBS云存储与检索。地图的展示可以为用户提供房屋的定位,周边环境的布局,交通等房租信息。LBS云将位置数据存储、数据检索、数据展现等信息上传至百度云端,为开发者提供访问接口[38]。百度地图API使用简单,为用户提供了方便可调用的接口,通过调用接口,百度地图服务对开发者完全免费,提供的接口丰富,开发者可以根据实际情况进行二次开发,节省了成本。据官网显示,市场占有率已有75%,日均位置服务请求900亿次,各个领域的著名企业如顺丰、美团、滴滴等都是百度地图的用户。本章描述了设计该系统涉及到的全文检索技术、用户模型技术、分布式开源搜索引擎Elasticsearch和百度地图API服务等一些关键性知识和技术。3系统需求分析本章主要对房源搜索系统进行需求分析,首先从系统业务流程开始,分析系统的角色,然后分别从用户和管理员(经纪人)角度出发,详细描述了房源搜索系统的功能需求。最后从性能、扩展性等对系统提出了非功能需求。经过调查和分析用户的实际需求,本系统由两类用户组成:普通用户和管理员(经纪人)。系统的主要业务流程说明如下:管理员(经纪人)通过房源搜索系统加入和发布房源信息后,用户则可以在未登录的情况下通过该系统进行房源搜索、地图找房,用户登录注册后,可以使用系统预约房源和进入个人中心查看个人信息。管理员可以查看对应的预约请求,以便完成用户的看房需求。系统主要的业务流程如图3-1所示。本节从普通用户和系统管理员两方面对系统的功能性需求进行详细的分析和描述。普通用户通过该系统可以登录注册、房源搜索、地图找房、预约看房和查看个人中心,管理员通过该系统进行房源的管理和预约信息的管理,为系统提供数据支持。接下来从普通用户和系统管理员的角度对系统进行功能性需求分析。1)普通用户普通用户的用例图如图3-2所示。普通用户(1)登录注册登录测试功能是每个系统的基础功能。在本系统中收藏房源和预约看房,填写预约时间等功能只有在用户登录后才能使用。为了方便用户注册,用户通过手机验证码登录,用户登录成功时会自动注册,之后可以在个人中心设置密码,再次登录时直接使用用户密码。其具体需求分析如下:普通用户和管理员通过不同的登录页面登录系统;普通用户可以使用手机免密码登录,也可以使用用户名和密码登录系统;管理员(经纪人)没有注册功能,通过系统提供的账号密码登录,但登录后可以修改;用户在通过手机和短信验证码登录时,在第一次登录会自动注册,登录后可以通过个人中心设置用户名或密码,下次可以通过密码登录。(2)房源搜索功能用户搜索房源是整个系统的核心功能,提供了一种精确搜索房源的方式,用户在未登录的情况下都可以输入任意房源信息的相关关键字如小区、位置、价格等,经过系统的筛选搜索,将符合要求的房源展示给用户。搜索具体需求分析如下:系统搜索页面分为输入框和结果展示列表两部分组成。当用户在输入框中输入文本时,下拉框能够显示该文本开头的关键字,减少用户的输入,结果列表将用于显示搜索结果。用户可以直接点击查看结果,还可以对搜索结果进行排序和筛选;在结果列表的上方提供筛选条件以过滤用户想要的结果。例如筛选条件可以有房型,租金,面积,租赁方式,朝向等,并且筛选条件是可以组合的;也可以根据房源更新时间,租金的高低及距离地铁的远近等对结果进行排序;对于登录的用户,根据用户不同的兴趣偏好,为不同的用户提供个性化的搜索结果,使用户感兴趣的结果排在前面。用户房源搜索用例图如图3-3所示。(3)地图找房功能为了提高用户的直观体验,用户可以通过地图找房模块浏览房源,系统会显示指定的地图区域的房源情况。用户还可以通过拖动,放大和缩小地图界面,实时展示地图范围内相应的房源。该功能是本系统的一个特色功能。在地图视图页面分为左右两栏,左栏显示在地图区域的房屋信息,右栏显示第一或第二层级的房源数据。具体需求如下:提供地图级别缩放功能。通过点击或拖动地图,地图上的房源数据会因地图级别的放大或缩小而发生变化。地图找房模块分为两层显示房源数据,每一层地图具有不同的比例尺。第一个级别是区域级别,该级别聚合了该区域中的房源数量。第二级为小区级,该层级会显示该小区名称和位置等详细信息;对该展现结果可以进行排序,默认以发布的时间排序,可以根据时间租金和面积等。地图找房用例图如图3-4所示。(4)预约看房功能用户可以就感兴趣的房源可以先收藏房源,相应的房源记录会在个人中心的收藏列表中,随时供用户查看,无需用户再次查询。预约看房模块需要用户与经纪人进行交互,用户申请实地看房,在填写预约时间后,等待经纪人联系看房,其预约状态会根据经纪人完成或是删除预约操作改变。(5)个人中心用户在个人中心中,可以查看收藏的房源信息,正在预约中的房源信息及已实地看房的房源信息,提供对用户信息的修改操作,通过个人中心设置用户的账号及密码。用户还可以提交自己对房源信息的个人喜好,提供个性化信息。2)系统管理员管理员也是系统的用户,除了可以使用以上功能外,还具有房源管理和预约管理的权限。房源管理主要是用于对前台系统的数据管理,对房源信息的增删改查,是系统数据的来源,能够及时的更新和调整前台内容。预约管理提供了用户和管理员线下交互的渠道。在本系统中,经纪人通过后台管理系统对房源信息进行添加,并且通过审核后进行上线发布,查看已发布的所有房源,修改和删除房源信息。预约管理对应用户的预约看房功能,经纪人可以查看本人的预约列表,结合“线上选房,线下看房”的模式,经纪人会联系用户完成线下看房,提供相应的后续服务,极大的提高了服务体验。经纪人的用例图如图3-5所示。经纪人(1)房源管理房源数据是房源搜索系统的基础资料,而房源管理则是为系统更新和查询房源数据,是系统的基础模块。房源更新操作包括对房源数据的新增、对已有的房源数据进行删除和修改。并且也提供了房源数据的查询操作。具体需求分析如下:经纪人可以新增单个房源信息,对于房源所在城市和地区、朝向、建房时间等信息,根据已有数据提供标准化输入进行选择;通过信息栏输入如房屋面积、价格、周边配套等其他信息;经纪人对填写的房源信息需要审核,审核的房源信息才能上线发布,被普通用户检索;经纪人可以对房源信息进行查询和按登记的时间、现行状态进行简单的筛选搜索,可以对房源内容进行修改与删除,保证房源信息的实时有效。(2)预约管理预约管理对应用户的预约看房,经纪人可以查看用户的预约信息,结合线上选房,线下看房的模式,完成用户的预约申请后,经纪人可以删除预约信息,完成线一个系统的优劣并不是仅仅判断是否满足了用户的功能性需求,还要考察系统的一些非功能性需求。是否能快速的响应结果,长期稳定的工作,是否满足用户的系统性能需求主要表现在系统的响应时间和稳定等方面,能够保证在上万人同时访问系统时,能够在5秒内响应用户,这样不会明显拖慢服务的响应速度,影响面对海量的数据系统,数据是非常珍贵的。对数据的操作都要格外小心。在本并且不能访问未授权页面,对于管理员,可以对数据进行更改和删除等操作。在用户登录注册页面,系统在提交数据表单时,需要对数据进行加密传输,并在后台进行加密存储,防止用户数据泄漏。数据库服务器登录需要设置复杂密码。登录任何服务器都需要权限验证。后台数据库增加自动备份功能,防止数据丢失和异常情况任何系统软件,出现错误或故障都无法避免,但当发生异常情况时,系统表现为仍能对外提供服务,能在短时间内恢复对数据的保存、备份及关键程序的响应,该系统的搜索引擎可以进行集群部署,多台服务器协同工作,数据复制到每个服务系统的可扩展体系结构设计是指可以在对现有系统的影响最小的情况下,扩展和增强系统的功能。随着市场的变化和用户的增加,数据也会越来越大,而如何承载海量的数据而不影响系统的性能,在本系统中,通过搜索引擎的水平扩展,向集群中添加更多的节点,向这些节点分配负载压力和访问流量。很好的解决了系统后期的业务和管理升级延展空间的问题,适应未来的新需求。本章对房源搜索系统进行了需求分析,对系统的功能需求和非功能需求进行了明确的说明,在功能需求说明中,从管理员(经纪人)和普通用户的角度详细描述了系统的功能需求,并给出了部分模块的用例图。最后,从性能、安全性、可靠性和扩展性对系统的提出了非功能性需求。接下来的几个章节主要对需求分析中的各个模块的设计和实现进行详细的说明。本章的设计是建立第三章需求分析基础之上的,主要介绍了房源搜索系统整体上的设计,为下一章的实现提供理论依据,其中描述了房源搜索系统各个模块的详根据系统需求分析中提出的功能需求,本系统采用基于浏览器的B/S结构,用户和管理员都可以通过浏览器进行各项操作其技术特点是能够充分利用互联网,完成数据的访问,操作与维护,为用户提供了简单高效的访问方式。从发展的角度考虑,采用B/S方式实现本系统,是符合当前的开发方向的,用户不需要额外的安装和升级客户端软件,使用普通的浏览器便可以登录房源搜索系统,降低了客户端软件及硬件平台的要求,与因特网完全兼容,扩展性好,增强了系统的通用性,具有较高的交互性和方便性。在用户量大时可以系统的网络架构如图4-1所示。用户2图4-1系统网络架构图整个系统设计采用的是三层架构,分别为:用户表现层、业务逻辑层、数据存储层,系统总体架构图如图4-2所示。房源搜索地图找房个人中心预约管理房源管理预约看房登录注册用户表现层提供的是供用户交互,供用户输入数据或浏览相关数据等页面,普通用户和管理员(经纪人)对应的前端表现层有登录注册页面、搜索页面、房源详情页面、地图找房展示页面、个人收藏页面及房源管理页面等。业务逻辑层实现了各个功能模块,包括登录注册、房源搜索、地图找房、预约看房、房源管理等,每个模块提供相应的服务,提供了系统功能的所有接口。存储层提供数据的持久化服务,根据系统功能的需要,存储层分为存储房源信息等关系型数据库MySQL、存储会话信息的Redis以及加快搜索效率而对房源数据建立的Elasticsearch数据库等。根据第三章的功能需求,可以将系统分为前台用户系统和后台管理员系统,系统下面又可以分为房源管理等七个模块。对应划分本系统的总体结构图如图4-3所示。个人中心预约看房地图找房房源搜索登录注册预约管理在本节中仅就系统五个重要模块的设计进行说明,主要包括用户的登录注册、基于Elasticsearch的个性化房源搜索功能模块、基于百度地图的房源查找模块、房源预约和房源管理模块。系统的很多功能如预约看房,个人中心等只有在用户登录注册后才能使用。系统的两种角色用户:普通用户和管理员(经纪人)。普通用户有注册、登录功能;管理员无需注册,系统提供用户名和密码,登录之后在个人中心可以修改密码。登录注册等功能实际上就是进行数据库的查询和添加,进行信息的匹配过程。在交互过程中,信息匹配成功则进入用户界面,失败则给出相应的错误提示。在本系统中,用户可以免密码登录,只需提供手机号。或者是首次登录后在个人中心中设置的用户名和密码登录,无需再次获取验证码,具体流程如图4-4所示。开始开始用户登录界面手机验证码登录验证码是否正确是是否第一次手机登录否登录成功结束手机号自动注册否是图4-4登录注册流程图用户进入登录注册页面后,可以选择免密登录或用户名登录,但用户第一次登录时,必须用手机验证码登录,在输入正确的手机号后,点击获取验证码,系统通过阿里云的短信服务会向用户发送6位随机验证码。开发短信服务需要申请阿里云账号,获取短信服务API秘钥,然后可以通过接口使用短信服务功能。用户登功后,后台会自动以手机号为用户名注册一个账户并将该账户返回,用户登录成功后可以在个人中心中设置自己的用户名和密码,为了用户的安全性,密码使用密文存入数据库,用户再登录时可以直接用设置的账号密码登录。用户若忘记密码,可为了帮助用户根据自身需求快速的找到想要的房源信息,特别是在系统房源信息量爆炸的时候,用户是很难找到自己想要的信息的,这时候,系统就必须要有搜索引擎功能。对于房源搜索功能,提供了一种将用户模型与Elasticsearch搜索引擎相结合的搜索优化方案。(1)特征词典对于房源中大多数特征,用户模型向量的每一维都可以通过<特征,特征值>组成,但一些属性只能用文字描述,例如户型特征,经常为两室一厅,三室一厅等。因此需要建立文字特征值到数值上的映射关系特征词典。在实际过程中,不同特征值可能相差几个数量级,需要处理到同一数量级,可以考虑将该值控制在0到1之间。例如,对于一房源户型为两室一厅一卫在计算特征值就需要考虑房间数、客厅数和卫生间数,而这三者又需要考虑各自的权重,很明显用户普遍关注的是房间数,相应的权值要设置更高。对这三方面进行加权求和,如公式4-1:其中k,n和max分别代表每个部分的权值,数量和阈值。在该系统中,户型的三个方面的阈值被设置为max1=5,max2=3和max3=2。权值分别为0.5,0.25和根据以上公式得到户型的特征词典如表4-1。类似地,可以像这样处理每个特征以获得文本的对应特征和特征值。一室户型一室一厅户型一室一厅一卫户型…户型…五室三厅二卫户型1…户型1这样,用户在输入关键词后,通过特征词典,然后结合用户兴趣偏好,就可以得到包含关键词和权值的搜索向量。(2)查询词结合用户模型的搜索向量对于输入的关键词,首先查询特征词典,找到该关键字对应的房源本体的哪个特征;如果有则继续在用户模型中查找,如果查找成功,则表示关键字能在用户模型中找到相应的兴趣偏好,此时表示可能需要取代原兴趣值,但搜索时仍以用户搜索条件为主;如果没有查找到,则用户没有该兴趣偏好。但如果用户频繁的查找该关键字,可能表示用户需要新增或更新兴趣,可以进行用户的兴趣模型的更新。具体流程如图4-5所示。查找用户兴趣模型是(3)搜索结果排序用户搜索关键词集默认在Elasticsearch中权重都是相同的,在任何情况下,不同用户搜索的结果集都是相同的,并不能体现出搜索的个性化,在引入个性化的搜索系统中,通过特征词典和用户模型的映射得到的搜索向量词中,具有个字段的权重值,考虑了用户的兴趣偏好对搜索结果集的影响,提供一个更高质量的查询集。最后房源搜索的整个搜索流程如图4-6所示。开始开始输入查询关键字用户兴趣偏好搜索向量Elasticsearch搜索房源信息房源id是否存在是MySQL根据房源id搜索房源返回房源结果结束结果返回为空否图4-6房源信息联合搜索流程(4)用户模型的更新改变用户模型,则只能满足前期的个性化搜索,不能长期提供服务。系统中主要通换。我们需要收集用户的搜索词集和搜索结果集。假设用户点击的搜索结果集为X,用户收藏的搜索结果集为Y,定义适应度函数R(Ti)如公式4-2。Ti代表从用户最近搜索词集中得到的某个偏好的各个新取值。在搜索的结果集中,用户对兴趣值为Ti的文档点击数记为XTi,YTi表示用户对兴趣值为Ti的文档的收藏数。click和collect分别表示用户点击和收藏操作的权值,是常数。更新时,选择适应度更高的R(Ti)更新原始兴趣值。对于搜索关键词存在房源本体而用户模型中没有,需要新增用户兴趣偏好。在增加新的兴趣时,同样将适应度函数作为新增兴趣的指标,如公式4-3。H(T)=R(T;)-c式中c是一个常数值,如果适应度函数R(Ti)小于c,说明Ti在搜索结果集中用户的点击或收藏不高,则不新增该兴趣;如果大于等于c,说明达到了新增该偏好的要求,则增加该偏好及权值Ti到用户兴趣表。而对于用户初期的需求,由于时间的推移,比如用户长时间未登录,如果系统在用户搜索时仍然沿用之前的用户兴趣模型,则结果可能出现偏差,系统应该周期性的删除这样的兴趣。这里采用艾宾浩斯遗忘曲线的近似公式,对应如公式4-4。当随着时间t越来越大,用户的兴趣偏好强度R会减小。当减少到一定程度,可以删除该用户兴趣。地图找房模块是本系统的核心模块也是特色模块,可以帮用户更直接,更方便的查找房源,了解房源的位置信息及周边配套。地图找房分为两个层级,地图比例尺越大,层级越大,第一级为地区层级,如洪山区,武昌区,江岸区等,这一层级会展示当前地图范围内区域中所有房源数量,以聚合的形式展示给用户,用户可以拖动地图查看感兴趣的区域,实时加载房源数量。第二层级为小区层级,通过点击第一层级或是放大地图可以进入到第二层级,该层级以麻点图的形式在地图显示小区的位置,点击小区房源点会显示该小区的详细信息。在用户拖动放大或缩小地图区域,随着地图的范围发生变化,用户展示页面左侧实时展示了地图范围区域内的所有房源信息列表。流程图如图4-7所示。是是否否用户通过浏览房源,查找房源,查看房源的详细信息,遇到感兴趣的房源后,就可以填写用户信息申请预约线下看房。相关经纪人在后台查看到对应的预约列表后,会联系用户线下实地查看房源,提供后续服务。结合“线上预约,线下看房”的模式,使用户随时就可以完成预约。其具体业务流程如下图4-8所示。房源预约系统业务流程图房源预约系统业务流程图中心生成预约列表发送预约请求经纪人查看预约信息本模块中涉及到了用户和管理员(经纪人)的交互,用户将收藏的房源申请预约,并在后台生成预约列表。管理员查看对应的房源预约列表,联系用户线下看房,结束预约。房源预约系统结合了当前互联网行业流行的线上线下模式,用户通过浏览器在线上完成房源搜索及填写申请的操作,而经纪人通过管理员后台联系用户线下看房,之后再通过后台处理预约相关操作。房源管理模块是整个系统的基础,主要面向的是管理员(经纪人)。管理员通过房源管理模块,实现房源信息的登记、发布、修改和删除。管理员登录系统后,进入房源新增页面,根据系统提示信息登记房源信息,包括房源标题,房源价格,房源面积,房源朝向,房源类型等,登记结束后将信息提交给房源搜索系统。如果输入信息被验证为有效,则数据信息存储在数据库系统中。如果输入信息错误,系统会提示用户出错信息。房源登记流程图如图4-9所示。是否正确是图4-9房源信息登记流程图房源信息登记后用户并不能直接搜索,还需要管理员自行审核发布,发布的房源信息在Elasticsearch数据库中建立索引,才能被用户检索。同时位置信息被上传到LBS云服务数据平台,可以在地图展示房源所在的地理位置。数据库是系统的持久层,是系统的基础。根据系统需求分析出所需要的实体对象,实体对象属性及实体之间的关系。本节主要从数据库的概念设计和逻辑设计介绍数据库的设计,绘制E-R图,并设计数据库表结构。4.4.1数据库概念设计房源搜索系统涉及到的实体对象主要有用户、管理员、房源信息和用户兴趣模型。用户和管理员可以根据用户角色来区分,在实际设计过程中,在数据库表中增加了角色属性,其他属性包括用户名、密码、手机和邮箱等。房源信息是系统的核心对象,主要包括价格、房龄、位置信息、交通出行、详细地址、朝向和交通出行等。用户兴趣模型是系统在搜索时结合用户的兴趣偏好将结果重新排序实现个性化而设计的,包含房源信息的户型、价格、面积等属性。管理员与房源信息存在一对多的关系,一个管理员可以管理多个房源信息。用户可以查询房源信息,并且可以收藏多个房源信息,而一个房源信息也可以被多个用户收藏。用户和用户兴趣是一对一关系,但用户模型可以根据用户的行为进行实时更新。系统的实体关系图如图4-10所示。详细地址号图4-10系统E-R实体关系图4.4.2数据库逻辑设计系统数据库包含MySQL关系型数据库、Elasticsearch数据库及百度位置云服务数据平台三部分。MySQL保存房源信息表、用户兴趣表等,Elasticsearch包含需要查找的房源信息索引,云服务数据平台存储房源的位置信息。(1)MySQL数据库的设计房源信息表主要包含房源ID、房源标题、价格等,具体列表见表4-2。表4-2房源信息表1notnull(主键)234面积5户型67城市简写8地区简写9房屋朝向notnull(-1无地铁)所在小区创建时间用户信息表包括了用户ID、用户名、密码、电话号码等信息,详情如表4-3。名称类型备注1notnull(主键)2用户名34电话号码5邮箱6房源地区表描述了房源所在的城市和区域及其所在经纬度,具体列表如表4-4所示。名称类型备注1Notnull(主键)23行政单位中文名城市或地区名4行政单位中文缩写城市或地区拼音简写5行政级别6百度地图经度7百度地图纬度房源预定表描述了用户预约信息,包括用户id、房源id、预约时间详情如表4-5所示。1notnull(主键)23451-收藏2-已预约6预约时间789创建时间为了实现用户的个性化搜索,需要记录和分析每个用户的个人兴趣信息,搜索历史。在数据库中需要为每个用户设计兴趣模型,主要包括用户兴趣信息表,用户搜索记录表和用户搜索结果记录表。首先是用户兴趣信息表记录用户的各个兴趣及其权重值。如果某个兴趣对应的是户型或是朝向等非数字值,存入该表的是特征词典映射后的数值,该表会根据用户的查询和行为进行实时更新。设计如表4-6所示。1notnull(主键)234567朝向用户搜索词表记录每次用户搜索的关键词,会定期分析该用户搜索的关键字来更新用户兴趣表,如表4-7所示。1notnull(主键)23搜索关键词4搜索时间用户搜索结果表记录用户对搜索结果是否进行了点击或收藏操作。同用户搜索表,定期分析以更新用户兴趣表,如表4-8所示。1notnull(主键)234搜索时间5(2)Elasticsearch数据库设计由于房源信息数据量大,MySQL等关系型数据库搜索时会多次读写磁盘,造成搜索系统反应缓慢,而Elasticsearch的索引存储在内存上,读写快,所以系统选择Elasticsearch来储存房源索引。Elasticsearch中的索引与数据库中的表有类似的结构。本系统中的housesearch的索引结构和MySQL数据库中的房源信息表类似,但有所不同。该索引中的属性基本与MySQL中房源表的字段基本一致,设计如表4-9所示。名称类型1234面积5创建时间6上次修改时间78所在地区9朝向地铁线名地铁站名小区户型交通出行出租方式Housesearch索引表不同于房屋信息表。houseld字段记录房源MySQL数据库中ID,为一对一关系,根据查到的houseID可以直接到数据库中提取信息;索引表中并没有存储房源的所有信息比如cover图片路径等字段,我们并不会使用全部字段去搜索,不需要在housesearch索引中存储这些信息,可以减少不必要的索引。(3)百度LBS云服务数据平台为了直观展示小区房源的地理位置,结合百度LBS云服务完成了房源位置在地图上的麻点图展示,展示的数据主要包括房源价格、面积、地理位置等,表中基本字段是数据平台提供的必选字段,自定义字段是系统对用户展示的数据。详情见表4-10所示。类型1notnull(主键)234567朝向89本章内容从系统的总体架构设计开始,到对系统的部分重要模块进行详细的介绍和分析,分别对房源搜索、地图找房、登录注册、预约看房和房源管理这五个关键模块做了介绍,最后对系统主要数据库表的进行设计和实现。5系统实现与测试本章是对系统设计的具体实现,主要包括房源搜索系统的开发环境的介绍,系统的功能实现和效果展示,最后对系统设计测试用例进行功能和性能测试,根据结果完整和改善系统功能,使之符合系统的需求。本系统的配置环境如下:操作系统版本:Windows10X64专业版数据库版本:MySQL5.7.22开发工具:IntelliJIDEA2017.3.5x64开发框架:SpringBoot1.5.10开发环境的配置:系统是基于Elasticsearch5.6.10实现的搜索服务,现对Elasticsearch的配置做简要介绍,Elasticsearch可以单机部署和集群部署,为了使用其分布式的特性,我们进行集群部署,在本系统中,采用单机多节点部署实现伪集群部署,提供相同的功能。文件下列属性值::集群名称要保证相同,相同集群名称的节点在启动后会自动加入:可以自定义,不相同的节点名称不要相同;http.port:访问端口号,部署在同一节点的端口不能相互相同。工程源目录和文件的介绍:vjava如图5-1所示,这个目录是典型的mvc结构,web表示用户表示层,系统接受用户的请求,通过处理后,返回给用户数据,是与用户交互的接口。service是系统的业务逻辑层,根据系统的流程和算法实现各模块的功能,其中search文件夹下的SearchServiceImpl.java实现了搜索的主要逻辑。entity是与数据库表对应的实体类。repository中是对实体的增删改查的操作类。目录base中存放各类公共函数,如返回给浏览器的各类应答码和消息。config文件夹下是Elasticsearch、JPA等组件和SpringBoot集成的配置文件。security中是对用户的权限控制,登录验证,注册加密的实现。task目录中是对用户行为进行分析并周期性对用户模型进行更新的实现类。resource文件夹下存放系统的资源文件,存放数据库等各类参数。根据系统的模块设计,主要将系统分为前台用户和后台管理员系统,前台用户系统又分为登录注册、房源搜索、地图找房、预约看房、个人中心,后台管理员系统有房源管理、预约管理模块。本节主要对登录注册、房源搜索、地图找房、预约看房和房源管理五大模块做具体分析。用户有两种方式登录系统,免密登录和用户名密码登录。并且有普通用户和系统管理员两种角色。本系统中使用SpringSecurity来实现用户登录和注册,首先需要继承实现WebSecurityConfigurerAdapter类,通过实现config和configGlobal方法来分别进行资源访问权限和登录验证。具体代码如下:protectedvoidconfigure(HttpSecurityhttp)throwsException{//资源访问权限.antMatchers("/admin/login").permitAllO//管理员登录入口.antMatchers("/static/**").permitAllO//静态资源.antMatchers("/admin/.antMatchers("/user/**").hasAn.antMatchers("/api/user/**").hasA用户角色分为ADMIN和USER,两者具有不同的登录入口,对页面也有不同的在configGlobal方法中配置的自定义认证策略类AuthProvider,继承和实现了AuthenticationProvider。对于前端传送过来的数据,如果前端数据参数中存在属性username则通过检查数据库中是否有该用户,并比较密码。否则判定是通过手机验证码登录,根据系统产生的随机码比对,验证是否通过。登录页面如图5-2所示。免密登录免密登录密码登录手机号6位验证码获取验证码验证码是通过阿里云短信服务发给用户,具体实现过程为:首先需要申请阿里云AccessKey和AccessKeySecret,然后引入阿里云短信SDK,配置短信服务对象IAcsClient,通过SendSmsRequest组装请求对象,调用getAcsResponse方法发送请房源搜索是系统的核心功能。在搜索之前,房源管理模块会在发布房源的同时通过ElasticSearch客户端异步创建索引;在用户通过关键词查询时需要Elasticsearch分词器会对关键词进行分词,而且在输入关键词时可以进行自动补全提示;最后兴趣偏好对结果会有所影响,因此需要对结果进行重新排序,以实现个性化搜索。最后根据用户的搜索关键字和结果集更新用户模型。本模块涉及的类如表5-1所示。搜索功能的实现,查找、创建、删除、更新索引(1)创建Elasticsearch索引诞生的,使用广泛。通过Settings对象来初始化一个TransportClient实例,然后可以使用ElasticSearch的所有功能。配置如下:SettingsesSets=Settings.builder().put("name",this.esName)//集群名称.put("client.transport.sniff",true)//启用集群嗅探InetSocketTransportAddressesAddr=newInetSocketTransportAddress(InetAddressTransportClientclient=newPreBuiltTransportC在得到TransportClient实例后,通过实例对象将房源信息实体以json格式写入到Elasticsearch数据库索引中。(2)中文分词及自动补全由于Elasticsearch默认的分词器对中文的分词是一个个字拆分,这样的分词会搜索不相关的结果,效果不理想。需要选择专门的中文分词器如IK分词。在本系统中,房源信息内容比较多,无需做细粒度的划分。使用IK分词器非常简单,只需在创建索引结构时在需要分词的字段加入属性"analyzer":"ik_smart"即可,索引时会自动对该字段进行分词形成索引表。例如对房源标题进行分词的配置如下:11引表结构mapping中加入属性:"suggest":{"type":"completion"}。当用户每输入一个字符的时候,需要立即向后端发送一次查询请求搜索匹配项,调用Elasticsearch的suggest方法实时搜索。效果如图5-3所示。万科金色城市(3)结果重排序在特征词典和用户模型得到搜索向量后,调用Elasticsearch中function_score接口设置查询字段和各字段的权重分值,返回给用户感兴趣的数据。比如对于某一用户的兴趣偏好为“两室一厅,面积为80平”,在输入“万科”搜索,首先会查询特征词UserModelService类的getUserModelByID方法从用户兴趣信息表中得到用户的偏好兴趣,最后结合用户兴趣模型的查询语句如下:"query":"万科",//搜索词}{"filter":{"term":{"layout":"两室一厅"}},"weight":1+0.28},{"linear":{"area":{"origin":80,"offset":5,"scale":10}}}//线性函数/查询语句中户型的权值被设置为1.28,所有字段默认权值都为1,0.28是该户型的特征值,对于面积,我们希望在80平左右,满意区间75到85,70到90也是可分数的大小排序。用户登录前搜索效果图如图5-4所示。整租万科金色城市精装2房1500/月1500元n苗菜路地铁口万科8号君悦商品精装2室邻六中15楼(共20同)201年2900元过此房用户登录后,再次输入关键字“万科”,搜索结果中符合用户的兴趣偏好的结果位置更加靠前。排序结果如图5-5所示。整租万科金色城市精装2房1500/月2018.1.12新]苗栗路地铁口万科8号君悦商品精装2室邻六中1125断2018./(4)用户模型的建立和更新该功能的实现主要涉及UserModelService类,在用户开始搜索前,我们需要搜索用户的个人偏好,建立起初始的用户兴趣模型,在用户登录后,进入个人中心,填写个人需求。通过addUserModel方法添加用户兴趣数据表中。用户添加个人需求效果如图5-6所示。房源需求对于用户模型的更新,需要定期分析用户的搜索关键词和搜索结果集,@Scheduled开启定时任务,其更新的基本过程如下:根据getSearchWord和getSearchResults方法从数据库表中得到用户的搜索关键词集和搜索结果集;通过地图显示属于用户前端页面,首先需要引入百度地图API文件,实例化地图对象map,之后用一个带有经纬度的Point坐标点和缩放级别来初始化地图。然后通过在Elasticsearch数据库的城市和地区信息,根据REGION_EN_NAME区域缩写调用aggregation聚合函数统计出在每个区域内房源数量。然后将数据返回给前端页面,在前端对每一个区域进行遍历,在各区域的中心位置设置一个标签,设置标签内容vartextLabel=newBMap.Label(textContent,{position:regionPoint,//标签位置offset:newBMap.Size(-40,20)//文本偏移量textLabel.setStyle({height:'78px',width:'78px',colbackgroundColor:'#0054a5',border:'Opxsolidrgb(255,0,0borderRadius:"50%",fontWeight:'bodisplay:'inline',ineHeight:'normal',textopacity:'0.8',zIndex:2,overflow实现效果图如图5-7所示。用户点击第一层级房源点会触发点击事件或者滚轮缩放触发地图缩放事件,通过设置的addEventListener监听其中的事件,设置生成自定义图层,请求LBS云服务数据,通过调用地图对象实例map的addTileLayer显示都地图上,点击地图上的麻点图,可以查看房源的位置等详细信息。具体实现代码如图5-8所示。customLayer=newBMap.CustomLgeotableld:196387,//LBS云服务数据表IDq:",//检索关键字tags:",//空格分隔的字符串pointDensityType:BMAP_POINT_DENSITY_实现效果图如图5-8所示。用1的用1的儿儿小中南民族大学武汉只业中南财经政法大学中南财经湖北第师范学院用户在浏览房源时,对感兴趣的房源首先收藏至个人中心,此时房源预约状态为IN_ORDER_LIST(已加入我的收藏),用户需到个人中心中填写看房时间和联系方式,发送预约请求,此时后台会在数据库中生成一条预约记录,房源状态为IN_ORDER_TIME(已经预约看房时间),用户的预约列表效果图如图5-9所示。关山大道精装三室拎包入住整租万科金色城市精装2房1500/月看房记录编辑资料房源需求取消预约我的收藏我的预约管理员在查看预约信息列表后,联系用户线下实地看房,看房完成后,经纪人可以将预约状态修改为FINISH(结束预约),结束预约后,用户可以在个人中心查看房源预约完成状态。管理员的预约列表如图5-10所示。间整租万科金色城市精法2房1500/月00房源管理主要是对房源信息的增删改查操作,分别对应saveHouse、deleteHouse、updateHouse和queryHouse接口,在房源信息表中定义了房源状态,相应的在代码中定义了4种状态,房源登记后是NOT_AUDITED未审核状态,点击发布按钮后,房源信息被索引,可以被检索,这时状态改变为PASSES审核通过状态,经纪人与用户在线下看房达成租房协议后,经纪人可以将房源下架,此房源称为RENTED已出租状态,最后,若房源不再出租,经纪人可以将该房源DELETED逻辑删除,其内部调用的是更新房源的接口,但房源信息仍存在于数据库,只是用户检索不到,这样达到了删除状态。管理员房源管理界面如图5-11所示。会首页>房源管理>房源列表+添加房源D0废0*0右显示第1至3项结果,共113项显示第1至3项结果,共113项系统测试是软件开发过程中重要的一环,通过系统测试,可以发现系统存在的问题然后不断的改进系统使其满足需求[42]。本章从功能和性能的角度对本系统进行了多方面的测试,验证系统是否符合最初的设计。本系统的测试环境如下:服务器端配置:服务器采用阿里云服务器,其中CPU:IntelXeon1核,内存:2GB,存储:高效云盘40GB网络带宽:1Mbps,操作系统:CentOS7.364位客户端配置:CPU:IntelCorei78核,内存8GB,存储:SSD128GB,操作系统:房源搜索和地图找房是系统的重要模块,本节主要对这个两个模块进行用例设房源搜索包括关键字查询及自动补全,结果筛选排序等功能测试用例如表5-2所示。编号预期结果实际结果1关键字查询(未登1、进入系统3、点击搜索按钮区域显示返回搜索结果符合预期2关键字查询(登录)1、登录系统2、在搜索栏输入关键字3、点击搜索按钮显示在列表区域符合预期31、执行房源搜索2、选择展示区上方的筛选条件对结果过滤返回符合筛选条件的结果符合预期4排序1、执行房源搜索2、选择展示区上方的排序选项对结果排序按所选排序方式排列结果符合预期地图找房主要包括第一、二层级展示功能和结果排序功能。测试用例如表5-3。用例预期结果实际结果1第一层级1、进入系统正确显示第一层级房源数量符合预期2第二层级1、点击第一层级房源标签或放大比例尺,进入第二层级房源点置信息正确显示第二层级房源点;点位置信息符合预期3展示结果排序点击地图页面左侧显示的房源信息排序方式按所选排序方式排列结果符合预期经过以上测试,用户子系统模块的功能满足系统的需求,工作正常。在对房源搜索系统的性能测试中借助于JMeter工具,JMeter是一种自动化性能测试工具,可以通过创建线程来模拟多用户同时访问系统,记录测试过程中的数据信息,判断系统的总体性能是否符合预期。通过JMeter开启多个线程来模拟10000,20000,40000,50000等多用户访问系统的业务模块,记录系统的最大响应与平均响应时间,具体的测试时间结果如表5-4所示。并发用户平均响应时间最大时间从表5-1的性能测试可以看出,系统的每一个测试模块的结果都基本满足了系统的期望,能够达到系统的运行需求,并且实现了系统的开发目标。本章主要是对系统的具体实现,包括登录注册、房源搜索、地图找房、预约看房房源管理模块的代码实现和效果展示。最后从系统的功能测试和性能测试结果来看,系统能够满足预期需求。6总结与展望本系统主要解决的是用户与经纪人在房源搜索系统中涉及到的基本信息,目的是在用户和经纪人之间充当中介作用,它使用户根据地点、价格等条件搜索到想要的房源,使经纪人更加有效的管理自己的房源信息,提高用户的搜索体验,使房源数据信息化、智能化。本文根据功能模块化和开发层次化设计和实现了用户表现层、业务逻辑层、数据存储层三层架构。(1)数据存储层中,基于功能需求分析设计了MySQL数据库表结构并搭建了数据库服务器,为了避免用户会话失效,使用Redis存储用户信息,设置失效时间,可以失效时间内可以免登录。使用Elasticsearch建立房源信息索引结构,加快服务器的搜索速度。(2)业务逻辑层包含用户登录、房源搜索、地图找房、预约看房等模块,业务逻辑层,主要作用是接受用户的请求,对请求进行合法验证,然后调用数据库对象完成对数据库的业务逻辑处理,实现系统的具体功能。(3)用户表现层,系统中的用户角色有普通用户和管理
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025武冈市精益职业技术学校工作人员招聘考试试题
- 2025梁山县职业中等专业学校工作人员招聘考试试题
- 2025杭州市交通职业高级中学工作人员招聘考试试题
- 市政新修道路绿化施工组织设计
- 外立面铝板门头安装施工技术方案
- 高中生基于三维建模技术模拟城市内涝应急疏散景观设计课题报告教学研究课题报告
- 2026年智能智能交通行业创新报告
- 幼儿园教师反思性实践能力提升-基于幼儿园教师教研日志分析
- 国内大模型催生算力国产化加速机器人产业持续演进持续看好相关产业投资机会
- 盖世食品2025年年报点评:产品结构升级产能与内外销协同发力
- 2025年重庆红色旅游市场调研报告
- CJ/T 288-2008预制双层不锈钢烟道及烟囱
- 东航总部劳务派遣合同6篇
- 外厂人员驻厂安全协议书
- 加油站资产价值评估报告
- s和m关系协议书
- 企业民法典宣讲课件
- GB/T 19405.3-2025表面安装技术第3部分:通孔回流焊用元器件规范的标准方法
- 国家开放大学2025年《机电控制工程基础》形考任务1-4答案
- 新生儿听力筛查技术规范解读
- 客户来电登记表(公司内部)
评论
0/150
提交评论