一尘不染

ElasticSearch获取突出显示的片段的偏移量

elasticsearch

是否可以获得每个突出显示的片段的字符位置?我需要将突出显示的文本与源文档匹配,并且使用字符位置将使其成为可能。

例如:

curl "localhost:9200/twitter/tweet/_search?pretty=true" -d '{
    "query": {
        "query_string": {
            "query": "foo"
        }
    },
    "highlight": {
        "fields": {
            "message": {"number_of_fragments": 20}
        }
    }    
}'

返回此突出显示:

"highlight" : {
    "message" : [ "some <em>foo</em> text" ]
 }

如果匹配的文档中的字段消息是:

"Here is some foo text"

有没有办法知道该摘要从匹配字段的char 8开始到char 21?

知道匹配 令牌 的开始/结束偏移量对我也很有益-也许有一种方法可以使用script_fields访问该信息?显示了如何获取令牌,而不是偏移量)。

“消息”字段具有:

"term_vector" : "with_positions_offsets",
"index_options" : "positions"

阅读 442

收藏
2020-06-22

共1个答案

一尘不染

客户端方法实际上是标准做法。

我们已经讨论了添加偏移量,但担心会导致更多的混乱。提供的偏移量特定于Java的UTF-16字符串编码,尽管从技术上讲,它们可以用于计算$LANG中的片段,但解析响应文本以指定的分隔符的方式更简单。

2020-06-22