elasticsearch Elasticsearch查询最短匹配
我在elasticsearch中搜索AB 结果:ABB在ABscore前面ABB>AB 我要AB>ABB
elasticsearch Elasticsearch查询最短匹配,
elasticsearch,
elasticsearch,我在elasticsearch中搜索AB 结果:ABB在ABscore前面ABB>AB 我要AB>ABB { 'sort': [{'_score': {'order': 'desc'}}], 'from': _from, 'size': page_size, 'query': { "multi_match": { "query": key, "type": "best_fields",
{
'sort': [{'_score': {'order': 'desc'}}],
'from': _from,
'size': page_size,
'query': {
"multi_match": {
"query": key,
"type": "best_fields",
"fields": ["name^5", "intro"]
}
}
}
"mappings": {
"doc": {
"properties": {
"intro": {
"type": "text",
"fields": {
"keyword": {
"ignore_above": 256,
"type": "keyword"
}
}
},
"name": {
"type": "text",
"fields": {
"keyword": {
"ignore_above": 256,
"type": "keyword"
}
}
},
"id": {
"type": "long"
},
}
}
}
我的数据是中文的
例如:
姓名:刘佳 简介:xxxxxx
姓名:刘佳佳 简介:xxxxxx如果ABB在你的语料库中比AB更少见,那么ABB的分数会更好,因为默认的分数使用TF/IDF公式 如果要根据字段长度增加字段的查询时间,首先需要使用painless和管道将字段长度存储在另一个字段中,或者在为数据编制索引之前。然后,您可以使用带有log2p修饰符的函数\u score\u查询来计算字段长度哪个字段包含AB和ABB值。执行name字段的这两个值,或者一个是name,另一个是intro。请共享包含这些值的映射和文档。只有这样才能确定为什么ABB的得分更高,因为有一个领域,即名称比介绍更高