我很难弄清楚如何设置elasticsearch来搜索典型的产品型号命名法。例如,搜索sm7b、sm 7b、sm 7、sm-7时,应显示一个名为“舒尔sm7b”的产品。。。反之亦然:搜索sm7b应该得到类似sm-7,sm7。。。
现在,我得到这样的结果:如果我搜索“罗兰d 50”,我会得到罗兰d 50,罗兰d-50,罗兰d-550,罗兰d-20等等。。。但是如果我搜索“罗兰d50”,我只得到“罗兰d50”的结果。
这是我当前的Map/设置:
{
"products" : {
"mappings" : {
"Product" : {
"properties" : {
"article_reviews" : {
"type" : "integer"
},
"brand_id" : {
"type" : "integer"
},
"category" : {
"type" : "text"
},
"category_id" : {
"type" : "integer"
},
"date" : {
"type" : "text",
"fields" : {
"keyword" : {
"type" : "keyword",
"ignore_above" : 256
}
}
},
"description" : {
"type" : "text"
},
"has_image" : {
"type" : "integer"
},
"id" : {
"type" : "integer"
},
"last_review_date" : {
"type" : "date",
"format" : "yyyy-MM-dd HH:mm:ss"
},
"min_price" : {
"type" : "text",
"fields" : {
"keyword" : {
"type" : "keyword",
"ignore_above" : 256
}
}
},
"name" : {
"type" : "text"
},
"name_order" : {
"type" : "keyword"
},
"price_history" : {
"type" : "integer"
},
"rating" : {
"type" : "float"
},
"reviews" : {
"type" : "integer"
},
"shops" : {
"type" : "text",
"fields" : {
"keyword" : {
"type" : "keyword",
"ignore_above" : 256
}
}
},
"widget" : {
"type" : "text",
"fields" : {
"keyword" : {
"type" : "keyword",
"ignore_above" : 256
}
}
}
}
}
}
}
}
此外,我还需要自动完成搜索,例如,“舒尔sm”应显示舒尔sm-7、舒尔sm7、舒尔sm58、舒尔sm 57等结果。。。在我打字的时候缩小范围。
有什么线索吗?谢谢您!
暂无答案!
目前还没有任何答案,快来回答吧!