考虑我已经索引了两个索引文件:
[
{
"name": "John Doe"
},
{
"name": "John A"
}
]
单词John
的匹配百分比分别为50和66.7,分别为第一个和第二个文档的字段name
。
现在的问题是,我怎样才能找到匹配百分比大于X的所有匹配项,其中0<=X<=100
。匹配应始终为前缀匹配。
答案 0 :(得分:0)
我认为这样做的唯一方法是在过滤器中使用enable fielddata on your field来确定字段的最小长度(您可以使用百分比和字词长度计算它):
{
"query": {
"bool": {
"filter": {
"bool": {
"must": [
// Your name: 'John' match
{
"script": {
"script": {
"params": {
"min_size": 4
},
// In ES <5.6 versions, use "inline" instead of "source"
"source": "doc['name'].values.length() > params.min_size"
}
}
}
]
}
}
}
}
}
但你必须{{3}}。
答案 1 :(得分:0)
虽然您可以使用脚本编写这样的内容(如Julien TASSIN所述),但这不是您想要的: