我已经完成了对名称的索引。它包含椅子,椅子等数据。
当我尝试使用“cha”进行搜索时,它没有返回任何椅子。它返回的是“粗毛地毯”,我希望有椅子的文档在这里。
下面是我的代码:
BoolQueryBuilder rootBoolQuery = new BoolQueryBuilder();
MultiMatchQueryBuilder multiMatchQueryBuilder = multiMatchQuery(searchKey).field(
SEARCH_CATEGORY_NAME_FIELD);
multiMatchQueryBuilder.fuzziness(Fuzziness.TWO);
multiMatchQueryBuilder.type(Type.BEST_FIELDS);
rootBoolQuery.must(multiMatchQueryBuilder);
搜索请求:{"query":{"bool":{"must":[{"multi_match":{"query":"cha","fields":["categoryname^1.0"],"type":"best_fields","operator":"OR","slop":0,"fuzziness":"2","prefix_length":0,"max_expansions":50,"zero_terms_query":"NONE","auto_generate_synonyms_phrase_query":true,"fuzzy_transpositions":true,"boost":1.0}}],"adjust_pure_negative":true,"boost":1.0}},"sort":[{"productcount":{"order":"desc"}}]}
搜索响应:{
"took": 4,
"timed_out": false,
"_shards": {
"total": 1,
"successful": 1,
"skipped": 0,
"failed": 0
},
"hits": {
"total": {
"value": 1,
"relation": "eq"
},
"max_score": null,
"hits": [
{
"_index": "category",
"_type": "_doc",
"_id": "331869",
"_score": null,
"_source": {
"rootcategory": "Home",
"categorycode": "Shag_Rugs",
"categoryname": " Shag Rugs",
"categoryid": 331869,
"parentcategory": " Rugs",
"productcount": 59
},
"sort": [
59
]
}
]
}
}对应:
"categoryname": {
"type": "text",
"fields": {
"keyword": {
"type": "keyword",
"ignore_above": 256
}
}
}
我怎样才能解决这个问题?谢谢,
斯里
最佳答案
嗨,您可以为自己的用例使用前缀查询,让我知道它是否解决了您的目的。请去Click here to get more info
关于spring-boot - Elasticsearch 结果与搜索键不匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63258387/