这里写目录标题
一、搜索模块的分析
1.1 项目的步骤
1 数据结构的准备
2 项目的初始化
3 es客户端的整合
4 谷粒搜索代码的开发
A 搜索功能
B 面包屑功能
1.2数据结构
1 商品名称(展示/查询)
2 商品价格(展示/查询)
3 商品图片(展示)
4 平台属性和属性值的列表(查询)
5 商品描述(展示/查询)
6 热度值(查询)
7 三级分类id(查询)
8 商品id
9 主键
1.3 参数结构
关键字(商品名称(展示/查询) 5 商品描述(展示/查询) 2 商品价格(展示/查询))
平台属性和属性值的列表(查询)
三级分类id(查询)
二、搜索模块的代码
2.1 通过es的mapping定义商品的数据结构
Es的mapping定义是基于整个库的
Mysql数据结构字段定义是基于整合表
Es的默认数据类型
PUT gmall0105
{
"mappings": {
"PmsSkuInfo":{
"properties": {
"id":{
"type": "keyword",
"index": true
},
"skuName":{
"type": "text",
"analyzer": "ik_max_word"
},
"skuDesc":{
"type": "text"
, "analyzer": "ik_smart"
},
"catalog3Id":{
"type": "keyword"
},
"price":{
"type": "double"
},
"skuDefaultImg":{
"type": "keyword",
"index": false
},
"hotScore":{
"type": "double"
},
"productId":{
"type": "keyword"
},
"skuAttrValueList":{
"properties": {
"attrId":{
"type":"keyword"
},
"valueId":{
"type":"keyword"
}
}
}
}
}
}
}
2.2 Jest 的客户端
2.3 如何定义复杂查询
查询一下条件的手机:
1 查询所有名字中带华为
2 查询所有4寸以下,16G内存
Query{
Bool:{// 先过滤,后查询
Filter:{term,term}
must:{match}
}
}
查询dsl的封装工具类
2.4 高亮显示
1 controller参数传递
增加一个PmsSearchParam参数类
2 service的业务逻辑编写
之前在测试是已完成
3排序和高亮
排序
GET movie_index/movie/_search
{
"query":{
"match": {"name":"red sea"}
}
, "sort": [
{
"doubanScore": {
"order": "desc"
}
}
]
}
// sort
searchSourceBuilder.sort(“id”,SortOrder.DESC);
高亮
“highlight” : {
“fields” : {
“skuName” : { }
}
}