2

我想在搜索结果中使用 Elasticsearch 的突出显示功能,但我不能使用分析器插件。我们的(非常定制的)NLP 管道相当繁重(在 CPU 和内存中,并且在生产中它可能会与其他服务对话以进行字典解析)。

目前我们将纯文本文档转换为标记列表,因此The quick siberian fox jumps over the grizzly bear变为{"text": "The quick siberian fox jumps over the grizzly bear", "tokens": ["quick", "siberian fox", "jump", "grizzly bear"]}. 然后我们只需将上面的内容作为文档插入,其中包含 2 个字段texttokens,并且我们将大部分搜索作为tokens字段上的完全匹配进行。到目前为止,一切都很好。

现在我们正在考虑在原始文本中突出显示匹配项,因此如果用户搜索“jump”,我们希望返回The quick siberian fox [jumps] over the grizzly bear。然而,据我所知,Elasticsearch 高亮引擎依赖于在索引时或查询时分析纯文本,以获取包含位置信息的术语向量。(这个对吗?)

因为我们不能为ES写一个分析器插件,所以不能依赖这个方法。但是,在纯文本字符串上运行 NLP 管道时,我们确实会生成位置信息,那么我们可以在索引时提供术语向量吗?我在ElasticSearch 中找到了用户定义的术语向量,但唯一的答案侧重于应用程序 (KNN),而不是手动插入术语向量的问题。

或者,我们可以使用不同的突出显示方式吗?我找到了https://www.elastic.co/blog/search-for-things-not-strings-with-the-annotated-text-plugin但我不确定如果我们只是索引东西会如何表现就像the [quick](quick) [siberian fox](siberian fox) [jumps](jump) over the [grizzly bear](grizzly bear)几乎所有东西都会被注释一样。

4

0 回答 0