一条数据中,有这样的一个字段Keyword:Computational devices; S models;现需要实现通过分号分词后来查询数据;查询规则如下:
1、检索Computational(不区分大小写)时命中结果;
2、检索Computational devices与devices Computational时命中结果;
3、检索devices S时不命中结果;
解决办法:
Keyword字段mapping:
"Keyword": {
"type": "text",
"analyzer": "standard",
"position_increment_gap": 20 //每个词条的间隔,默认为100
}
插入数据时将值转换为数组类型添加;全查询时得到如下数据;
"Keyword": [
"Computational devices",
"S models"
]
查询方法:
{
"query": {
"match_phrase": {
"Keyword": {
"query": "devices computational",
"slop":2 //两个词条的位置交换需要移动两次;如果查询Computational models需要命中则需要移动22次
}
}
}
}