解决搜索结果排序问题
2017-10-27 09:35
316 查看
一、定位方法所在:
(1)访问项目网站,右击页面“审查元素”,审查network->XHR,接着测试需要的模块,如图我在搜索框中输入 “剁椒鱼头” ,根据名字就大致可以判断 调用的是“fetchAllRestaurants”。
(2)需要注意的是,由于是action层跟前端进行接触的,所以这里的“fetchAllRestaurants”对应的是action层,并且与方法上面的@action注解后面的value值对应。
这里虽然@action下的方法名也叫fetchAllRestaurants,但全属巧合。
注:我们知道写搜索的模块是action->customer->mobile->RestaurantSearch,所以在RestaurantSearch中按住ctrl+f调出文件内搜索“fetchAllRestaurants”即可找到对应的方法。
(3)
接下来就需要找到是调用的哪个service层(实现业务逻辑)方法来实现相应功能的,以上两个代码段是action方法中调用了service的部分,第一个是为了得到地区id,第二个是通过已有参数返回所有餐馆(我们想要的搜索结果就是餐馆),所以能够定位到,是service层ResraurantService的allRestaurantsForIndex方法完成这部分功能。
注:把鼠标移到“allRestaurantsForIndex”上,按住ctrl加左键,即可对应到相应的service层接口,点击左侧“I”图标,即可找到相应的service层实现类。
二、更改目标代码:
allRestaurantsForIndex的代码中出现switch,里面分为case1,case2,case3,default。想要知道是哪一种情况,打上断点再去执行搜索结果模块即可,最后程序跳入了default,那么可以判定,我们要做更改的部分就只有如下代码:
在返回餐馆过程中,这部分代码已经执行了查询综合评分,但是最终没有实现排序,原因在于前端未能利用这部分数据进行排序操作。所以我们可以在后端进行排序,以下是加上的代码片段实现排序。
注解:Comparator是个接口,可重写compare()和equals()两种方法,用于比较。如果为null的话,就是使用元素的默认排序。
compare(a,b)方法:根据第一个参数小于、等于或大于第二个参数分别返回-1,0或1
equals(obi)方法:仅当指定的对象也是一个Cpmparator,并且强行实施与此Comparetor相同的排序才返回true。
Collections.sort(list, new Comparator());的第二个参数就相当于一个标志,告诉sort方法按什么顺序来对list进行排序。
compareTo() 方法用于将 Number 对象与方法的参数进行比较。可用于比较 Byte, Long, Integer等。
如果指定的数与参数相等返回0。
如果指定的数小于参数返回 -1。
如果指定的数大于参数返回 1。
(1)访问项目网站,右击页面“审查元素”,审查network->XHR,接着测试需要的模块,如图我在搜索框中输入 “剁椒鱼头” ,根据名字就大致可以判断 调用的是“fetchAllRestaurants”。
(2)需要注意的是,由于是action层跟前端进行接触的,所以这里的“fetchAllRestaurants”对应的是action层,并且与方法上面的@action注解后面的value值对应。
这里虽然@action下的方法名也叫fetchAllRestaurants,但全属巧合。
注:我们知道写搜索的模块是action->customer->mobile->RestaurantSearch,所以在RestaurantSearch中按住ctrl+f调出文件内搜索“fetchAllRestaurants”即可找到对应的方法。
(3)
areaId = areaService.getLocalName().getId();
restaurantService.allRestaurantsForIndex(areaId, latitude, longitude, dishTypeId, isCut, orderTypeFlag, name);
接下来就需要找到是调用的哪个service层(实现业务逻辑)方法来实现相应功能的,以上两个代码段是action方法中调用了service的部分,第一个是为了得到地区id,第二个是通过已有参数返回所有餐馆(我们想要的搜索结果就是餐馆),所以能够定位到,是service层ResraurantService的allRestaurantsForIndex方法完成这部分功能。
注:把鼠标移到“allRestaurantsForIndex”上,按住ctrl加左键,即可对应到相应的service层接口,点击左侧“I”图标,即可找到相应的service层实现类。
二、更改目标代码:
allRestaurantsForIndex的代码中出现switch,里面分为case1,case2,case3,default。想要知道是哪一种情况,打上断点再去执行搜索结果模块即可,最后程序跳入了default,那么可以判定,我们要做更改的部分就只有如下代码:
在返回餐馆过程中,这部分代码已经执行了查询综合评分,但是最终没有实现排序,原因在于前端未能利用这部分数据进行排序操作。所以我们可以在后端进行排序,以下是加上的代码片段实现排序。
注解:Comparator是个接口,可重写compare()和equals()两种方法,用于比较。如果为null的话,就是使用元素的默认排序。
compare(a,b)方法:根据第一个参数小于、等于或大于第二个参数分别返回-1,0或1
equals(obi)方法:仅当指定的对象也是一个Cpmparator,并且强行实施与此Comparetor相同的排序才返回true。
Collections.sort(list, new Comparator());的第二个参数就相当于一个标志,告诉sort方法按什么顺序来对list进行排序。
compareTo() 方法用于将 Number 对象与方法的参数进行比较。可用于比较 Byte, Long, Integer等。
如果指定的数与参数相等返回0。
如果指定的数小于参数返回 -1。
如果指定的数大于参数返回 1。
相关文章推荐
- Lucene搜索结果排序问题(按时间倒序排的替代解决方法)
- Lucene搜索结果排序问题(按时间倒序排的替代解决方法)
- android信息从联系人添加收件人,在联系人多选界面(联系人中有Google账户)搜索时,搜索结果出现排序错误的问题
- 解决google无法访问或搜索结果无法打开问题
- 解决SharePoint文档库文件在搜索结果页面显示的标题和文档的标题不一致问题(search result)
- oracle翻页,排序字段重复,翻页结果重复 问题的解决方法
- Lucene.Net2.0搜索结果排序问题
- Phpcms v9搜索结果不全及搜索不到内容和搜索结果排序问题
- 解决Outlook搜索功能的搜索结果不完整问题
- 开源DIGG软件PBDigg2.0的修改(八):解决搜索文章结果出现代码的问题。
- 解决模糊查询的结果记录排序问题
- 大家用Google是否也会经常打不开搜索结果?分享一个好东东吧,可以解决这个问题
- 解决模糊查询的结果记录排序问题
- 浏览器点击百度搜索结果之后,原搜索页面出现重定向乱码不断刷新问题的分析和解决
- 利用冗余字段解决查询结果排序慢的问题
- 我的Android进阶之旅------>解决Android Studio全局搜索搜不到结果的问题
- 关于nutch1.2 配置到tomcat中搜索不到结果的问题解决
- 解决UISearchDisplayController搜索结果滚动时,顶部透明的问题
- Magento网站搜索结果过多-搜索不准确的问题问题的解决
- 解决android 2.2 market搜索结果偏少的问题