如何使用弹性搜索和Java实现性别提前输入的自动建议



我正在尝试在从后端返回的自动建议中包含性别。

当前设置:当我在搜索栏中输入"某某"时,它会自动给出鞋子、衬衫等建议。

新要求:

当我在搜索栏中键入"嘘"时,它应该会根据用户个人资料中的性别返回如下个性化的自动建议。

的例子:如果用户是女性,返回

"女鞋">

"女衬衫">

如果用户是男性,返回

"男鞋";

"男衬衫">

有人能帮助我如何实现这在弹性搜索和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。

相关内容

  • 没有找到相关文章

最新更新