elasticsearch - 在 Elasticsearch 中,如何优先考虑短语中的某些单词
问题描述
我在 Elastic Search 7.4 中有一个名为 product 的索引
产品有一个名为标题的字段。
如果我想搜索 blue watch 的所有标题,我想查看 blue watch 或 watch 的所有结果。我不想看到像蓝色 T 恤这样的结果。我想优先考虑观察这个词。
即如何确定搜索短语中的名词并赋予它比相应形容词更高的优先级。
解决方案
在elasticsearch中使用boost参数
boost参数赋予单词“watch”比“blue”更高的优先级
{
"query": {
"bool": {
"should": [{
"match": {
"title": "blue",
"boost": 1
}
},
{
"match": {
"title": "watch",
"boost": 10
}
}
]
}
}
}
如果您希望单词“watch”成为强制匹配,只需将其放入 must block 并将“blue”放入 should block 以使其可选
{
"query": {
"bool": {
"must": {
"match": {
"title": "watch",
"boost": 10
}
},
"should": {
"match": {
"title": "blue",
"boost": 1
}
}
}
}
}
推荐阅读
- javascript - 包含在多维数组中
- django - Django - 模板未显示我传递的整个上下文列表
- c++ - 在 CentOS 上安装 tcmalloc
- r - 安装 AER 但无法识别包“car”
- c# - 让!seq {...} 中不允许异步?
- c - 具有不同头目录的Makefile?
- angular - ContentChild 无法与 ngContent 一起使用 Angular
- python - python中的正则表达式:如果一行中的n个字符等于模式,则匹配单词
- elasticsearch - Kibana 开发工具和 elasticsearch-py 客户端得到不同的输出
- html - 表格单元格内的菜单不响应 z-index