使用通配符突出显示的 Elasticsearch 无法按预期工作
Elasticsearch highlighting with wildcard does not work as expected
我现在使用 elasticsearch highlight 有一段时间了,但遇到了一些问题。
这是突出显示的查询:
"highlight" : {
"pre_tags" : [ "<span class=\"mark\">" ],
"post_tags" : [ "</span>" ],
"order" : "score",
"encoder" : "html",
"require_field_match" : false,
"fields" : {
"*" : { }
}
}
我在字段中指定 * 是因为我需要突出显示所有可能的字段并且不想全部指定它们。
问题是,如果我使用字段查询,它还会突出显示未查询的字段,
例如,如果我查询:
Name:Macdonalds
它还会突出显示:
Name:**Macdonalds**
Description: **macdonalds** fast food...
我正在使用 query_string 查询,我无法将 require_field_match 设置为 true,因为我还在所有字段中搜索免费测试,如果我将此参数设置为 true,它不会突出显示任何内容。 ..
有什么建议吗?
有人遇到过这样的问题吗?
好吧,我已经设法解决了这个问题(在@Will 评论之后)
当明确指定要在查询本身中突出显示的所有字段并设置 require_field_match" : true
突出显示按预期工作:)
有点奇怪......但有效。这种方式在高亮不是字符串的字段时会出现问题,所以要注意。
{
"from" : 0,
"size" : 10,
"query" : {
"query_string" : {
"query" : "some query",
"fields" : [ "field1", "field2", ... ],
"use_dis_max" : true
}
},
"highlight" : {
"pre_tags" : [ "<span class=\"mark\">" ],
"post_tags" : [ "</span>" ],
"order" : "score",
"encoder" : "html",
"require_field_match" : true,
"fields" : {
"*" : { }
}
}
}
我现在使用 elasticsearch highlight 有一段时间了,但遇到了一些问题。 这是突出显示的查询:
"highlight" : {
"pre_tags" : [ "<span class=\"mark\">" ],
"post_tags" : [ "</span>" ],
"order" : "score",
"encoder" : "html",
"require_field_match" : false,
"fields" : {
"*" : { }
}
}
我在字段中指定 * 是因为我需要突出显示所有可能的字段并且不想全部指定它们。 问题是,如果我使用字段查询,它还会突出显示未查询的字段, 例如,如果我查询:
Name:Macdonalds
它还会突出显示:
Name:**Macdonalds**
Description: **macdonalds** fast food...
我正在使用 query_string 查询,我无法将 require_field_match 设置为 true,因为我还在所有字段中搜索免费测试,如果我将此参数设置为 true,它不会突出显示任何内容。 ..
有什么建议吗? 有人遇到过这样的问题吗?
好吧,我已经设法解决了这个问题(在@Will 评论之后)
当明确指定要在查询本身中突出显示的所有字段并设置 require_field_match" : true
突出显示按预期工作:)
有点奇怪......但有效。这种方式在高亮不是字符串的字段时会出现问题,所以要注意。
{
"from" : 0,
"size" : 10,
"query" : {
"query_string" : {
"query" : "some query",
"fields" : [ "field1", "field2", ... ],
"use_dis_max" : true
}
},
"highlight" : {
"pre_tags" : [ "<span class=\"mark\">" ],
"post_tags" : [ "</span>" ],
"order" : "score",
"encoder" : "html",
"require_field_match" : true,
"fields" : {
"*" : { }
}
}
}