【发布时间】:2018-11-26 11:45:34
【问题描述】:
我正在使用 Elasticsearch 6.2 构建 cross-fields search。我在弄清楚如何处理我的任期内的部分匹配时遇到问题。
我的查询:
{
"index":"course",
"type":"course",
"body":{
"query":{
"bool":{
"must":{
"multi_match":{
"query":"macroeconomics",
"fields":[
"course_name",
"course_number",
"university_name"
],
"type":"cross_fields"
}
}
}
},
"sort":[
{
"_score":"desc"
},
{
"students":{
"order":"desc"
}
}
],
"from":0,
"size":50
}
}
查询返回的结果与跨字段模式下的macroeconomics 搜索词完全匹配。
问题是,只要我将搜索词更改为 macro,我就会得到一些仅与 macro 词(完全匹配)相关的结果,而我的 预期结果将包括:
-
macro术语的任何结果(作为完全匹配),加上 -
macro术语的任何结果(作为部分匹配),例如在 “宏观经济学”
我知道使用通配符会影响性能,因此这不是最佳方式。
如何调整我的查询以获得如上所述的预期结果?这不仅仅是将“宏”视为前缀,而是将其视为其他结果中可用的潜在子字符串。
【问题讨论】:
标签: elasticsearch elasticsearch-6