在 Elasticsearch 中返回搜索查询的位置并突出显示

问题描述 投票:0回答:2

我正在使用安装在个人 Debian 服务器上的官方 Elasticsearch-PHP 客户端,我想要做的事情包括索引、搜索和突出显示单个文档。即每个搜索结果只会返回一个文档 - 然后该文档将突出显示以进行“简单查询字符串”搜索。我也在使用 FVH(快速矢量突出显示)。

我的问题与这个类似位置作为结果,而不是突出显示并且测试代码基本相同,所以我不会在这里重复。然而,就我而言,我需要both位置和突出显示。我点击了有关术语向量的文档的链接,但就像其他OP一样,我的搜索本身并不是确切的单词。在某些情况下,它们是短语。我该如何处理这个问题? 我的用例是仅搜索一个文档(对于每个查询),并提供结果摘要,其中包含链接,用户可以单击这些链接转到文档中该结果来源的特定位置。如果我有索引/位置,我可以简单地将其用于文档的完整源代码。我检查了文档没有结果。

elasticsearch search lucene elasticsearch-php fast-vector-highlighter
2个回答
2
投票
wikimedia 基金会

开发的特定插件,名为 实验荧光笔 -github 此处 您可以通过这种方式安装elasticsearch 7.5 - 其他elasticsearch版本请参考github项目页面:

./bin/elasticsearch-plugin install org.wikimedia.search.highlighter:experimental-highlighter-elasticsearch-plugin:7.5.1

并重新启动elasticsearch。

因为您还需要检索

positions

- 如果对于您的用例,偏移量可以替换位置,请继续到下一段 - 您应该使用带有索引选项的 termvector 声明您的字段

"with_position_offset_payloads"
- doc
here
PUT /my-index-000001 { "mappings": { "properties": { "text": { "type": "text", "term_vector": "with_positions_offsets_payloads", "analyzer" : "fulltext_analyzer" } } } }

对于其他不需要检索位置的情况,使用索引选项会更快并且使用更少的空间
"offsets"

- 弹性文档

这里
,插件文档这里: PUT /my-index-000001 { "mappings": { "properties": { "text": { "type": "text", "index_options": "offsets", "analyzer" : "fulltext_analyzer" } } } }

然后您可以使用实验荧光笔进行查询并仅返回荧光笔部分的偏移量:

{ "query": { "match": { "text": "hello world" } }, "highlight": { "order": "score", "fields": { "text": { "number_of_fragments": 10, "fragment_size": 15, "type": "experimental", "options": {"return_offset": true} } } } }

通过这种方式,您的查询不会返回任何文本,而只会返回 
start offset

end offset
- 代表位置的数字。要检索突出显示的内容,您需要在
['hits']['hits'][0]['_source']['text']
内输入 - 文本是您的字段名称 - 并使用起始偏移点和结束偏移点从字段中提取文本。您需要确保使用正确的字符串编码 -
UTF-8
- 否则偏移量与文本不匹配。根据医生的说法:

return_offsets 选项更改突出显示的结果 字符串到突出显示的偏移量 突出显示。如果您需要保持客户端理智,这很有用 检查突出显示。而不是标记的片段,您将 得到类似 0:0-5,18-22:22 的结果。外面的数字是开始和 片段的结束偏移量。由 ,s 分隔的数字对 是热门歌曲。 - 之前的数字是起始偏移量, - 之后的数字是结束偏移量。多值字段有一个 它们之间的单个字符偏移量。

让我知道该插件是否有帮助!


0
投票

旗帜应该是:

"options": {"return_offsets": true}

https://github.com/wikimedia/search-highlighter/tree/master

documentation screenshot

© www.soinside.com 2019 - 2024. All rights reserved.