是否有可能获得每个突出显示的片段的字符位置?我需要将突出显示的文本与源文档相匹配,并且使字符位置成为可能.
例如:
curl "localhost:9200/twitter/tweet/_search?pretty=true" -d '{
"query": {
"query_string": {
"query": "foo"
}
},
"highlight": {
"fields": {
"message": {"number_of_fragments": 20}
}
}
}'
Run Code Online (Sandbox Code Playgroud)
返回这个高潮:
"highlight" : {
"message" : [ "some <em>foo</em> text" ]
}
Run Code Online (Sandbox Code Playgroud)
如果匹配文档中的字段消息是:
"Here is some foo text"
Run Code Online (Sandbox Code Playgroud)
有没有办法知道片段从char 8开始到匹配字段的char 21结束?
知道匹配令牌的开始/结束偏移对我来说也是好事 - 也许有一种方法可以使用script_fields访问该信息?(此问题显示如何获取令牌,但不显示偏移量).
字段"消息"具有:
"term_vector" : "with_positions_offsets",
"index_options" : "positions"
Run Code Online (Sandbox Code Playgroud)
dre*_*ewr 10
客户端方法实际上是标准做法.
我们已经讨论过添加补偿,但担心这会导致更多的混乱.提供的偏移量特定于Java的UTF-16字符串编码,虽然它们在技术上可用于计算$ LANG中的片段,但解析您指定的分隔符的响应文本更为直接.
我们最终扩展了原始文本,如下所示:
一些[1]文本[2]我们[3]索引[4]
然后我们定义一个自定义分析器:
"char_filter": {
"remove_tags": {
"type": "pattern_replace",
"pattern": "\\[[0-9]+\\]",
"replacement": ""
Run Code Online (Sandbox Code Playgroud)
现在,在突出显示的片段中,我们获得了位置标记,并且我们知道它们出现在文本中的哪个位置.丑,但有效!
我在这里给出了更全面的答案
| 归档时间: |
|
| 查看次数: |
5548 次 |
| 最近记录: |