一、酒店搜索和分页
需求:实现黑马旅游的酒店搜索功能,完成关键字搜索和分页
1、定义实体类,接收前端的参数
如果当搜索条件为空的时候,就返回全部数据,不为空才按照key来搜索
二、条件过滤
修改实体类,加几个参数,参数就是条件
城市city、品牌brand、星级starName都是精确匹配,而价格price是范围匹配,过滤条件要放到filter里面,这样不会参与算分,提高性能
注意:多个条件之间用AND关系,组合条件用BooleanQuery,参数都要做非空判断
三、附近的酒店
前端带着我的位置来请求我们的接口,我们用这个location去es找,按千米为单位来排序
我们拿对象的时候,要多拿个sort字段,表示目标距离我们多少km,要返回给前端
四、广告制定
需求:默认情况是按照相关性来排序的,但是我们想给某些酒店打广告,放到前面。让指定的酒店在搜索结果排名中指定。
- 给hotelDoc类添加isAD字段,boolean类型,表示是否打广告
- 挑选几个喜欢的酒店,给文档数据添加isAD字段,为true
- 修改search方法,添加function score功能,给isAD值为true的增加权重
先增加了4个广告
满足过滤条件的就会执行算分函数,增加权重,直接乘10