是否可以获得每个突出显示的片段的字符位置?我需要将突出显示的文本与源文档匹配,并且使用字符位置将使其成为可能。
例如:
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"
客户端方法实际上是标准做法。
我们已经讨论了添加偏移量,但担心会导致更多的混乱。提供的偏移量特定于Java的UTF-16字符串编码,尽管从技术上讲,它们可以用于计算$LANG中的片段,但解析响应文本以指定的分隔符的方式更简单。