我正在尝试在从后端返回的自动建议中包含性别。
当前设置:当我在搜索栏中输入"某某"时,它会自动给出鞋子、衬衫等建议。
新要求:
当我在搜索栏中键入"嘘"时,它应该会根据用户个人资料中的性别返回如下个性化的自动建议。
的例子:如果用户是女性,返回
"女鞋">
"女衬衫">
如果用户是男性,返回
"男鞋";
"男衬衫">
有人能帮助我如何实现这在弹性搜索和java springboot。
在Elasticsearch中有几种实现方法。
使用补全建议。对于完成建议字段中的每个条目,添加性别作为类别上下文。在向elasticsearch发送请求时,将登录用户的性别添加到查询上下文中。
简单的实现:
PUT store_item
{
"mappings": {
"properties": {
"suggest": {
"type": "completion",
"contexts": [
{
"name": "gender",
"type": "category"
}
]
}
}
}
}
PUT store_item/_doc/1
{
"suggest": {
"input": [ "shoes" ],
"contexts": {
"gender": ["male"]
}
}
}
PUT store_item/_doc/2
{
"suggest": {
"input": [ "shoes" ],
"contexts": {
"gender": ["female"]
}
}
}
查询:
POST store_item/_search?pretty
{
"suggest": {
"place_suggestion": {
"prefix": "sh",
"completion": {
"field": "suggest",
"size": 10,
"contexts": {
"gender": [
{ "context": "male" }
]
}
}
}
}
}
您将获得所有带有"Male"上下文,以"嘘"开头。您可以简单地附加字符串"for men"。到每个结果的末尾,在您的客户端应用程序中。
要在Spring Boot中实现这个:你需要参考这个链接,它强调了如何通过Spring Boot Api实现完成建议器。
Medium文章展示了一个Spring引导实现示例
请注意,您的索引结构就像我在我的答案中演示的那样。Java/Spring Boot中确切的API实现只是封装了REST API。