大家。
目前,我正在使用match_query ElasticSearch,我正面临着标题中描述的问题。
字段名称:img=inputimg
perspective = np.eye(3,dtype=np.float32) + np.random.uniform(-0.0015,0.0015,(3,3))
perspective[2][2] = 1.2
newimg = cv2.warpPerspective(img, perspective, (img.shape[1], img.shape[0]), borderValue=(255,255,255))
其映射:
project.name
例如,用户想要搜索项目的名称: "project": {
"properties": {
"name": {
"type": "string",
"fields": {
"raw": {
"type": "string",
"index": "not_analyzed"
}
}
},
"owner": {
"type": "string",
"index": "not_analyzed"
}
}
}
在数据库中只有the ranger 1
= project.name
the ranger
仅匹配3个字词project.name
,the
和ranger
中的2个字词the
,ranger
) )
那么有没有办法搜索所有1
字段匹配至少60%查询字符串的文档。
先谢谢。
答案 0 :(得分:1)
TLDR :您可以在匹配查询中使用minimum_should_match。
匹配查询的类型为boolean。这意味着分析所提供的文本,并且分析过程根据提供的文本构造布尔查询。可以将运算符标志设置为or
或and
来控制布尔子句(默认为or
)。可以使用minimum_should_match参数设置要匹配的可选should子句的最小数量。可以设置分析仪来控制哪个分析仪将对文本执行分析过程。它默认为字段显式映射定义或默认搜索分析器。
{
"query": {
"match": {
"project.name": {
"query": "the ranger 1",
"minimum_should_match": "2"
}
}
}
}
您还可以指定百分比和某些条件。看这里: https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-minimum-should-match.html