【发布时间】:2021-07-08 10:21:07
【问题描述】:
我正在寻找一种方法来创建可以匹配布尔字段值的基于文本的查询。
举例来说——我的查询可能是“红地毯人工”或“人工红地毯”,我有布尔字段映射为artificial: true/false 的文档。使用这些短语,我需要匹配具有 artificial: true 的文档。
这是存储在索引中的数据:
[
{
"name": "Fast car",
"artificial": true
},
{
"name": "Red carpet",
"artificial": true
},
{
"name": "Green carpet of grass",
"artificial": false
},
{
"name": "Lovely bunny",
"artificial": false
},
{
"name": "Big house",
"artificial": true
},
{
"name": "Green plant",
"artificial": false
}
]
现在我有用户输入的搜索短语,例如:
- “人造地毯”
- “地毯(人造)”
- “地毯 - 人造”
我需要构造查询,当输入上述短语时总是返回:
{
"name": "Red carpet",
"artificial": true
}
但是当用户进入时:
- “地毯”
它实际上会返回:
{
"name": "Green carpet of grass",
"artificial": false
}
(或者两个“地毯”组成的文件都更容易实现。)
问题是我在这里需要搜索短语标记化,因为“人工”可以用不同的方式命名。
“人工”是我的关键字,不会改变。
Elasticsearch 中是否有某种机制或某种工作流程来实现这一点?也许将artificial: (bool) true/false 重新映射到artificial: (keyword) artificial/null 或其他什么?那么查询会是什么样子呢?
【问题讨论】:
标签: elasticsearch