gpt4 book ai didi

java - Elasticsearch - EdgeNgram + highlight + term_vector = 不好的亮点

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:53:33 24 4
gpt4 key购买 nike

当我使用带有 edgengram (min=3, max=7, front) + term_vector=with_positions_offsets 的分析器时

文档有 text = "CouchDB"

当我搜索“couc”时

我的重点是“cou”而不是“couc”


我的亮点似乎只在最小匹配标记“cou”上,而我希望在确切的标记上(如果可能的话)或至少是找到的最长标记。

无需使用 term_vector=with_positions_offsets 分析文本即可正常工作

删除 term_vector=with_positions_offsets 对性能有什么影响?

最佳答案

当您为特定字段设置 term_vector=with_positions_offsets 时,这意味着您正在为该字段存储每个文档的术语 vector 。

在突出显示方面,术语 vector 允许您使用 lucene 快速 vector 荧光笔,它比标准荧光笔更快。原因是标准荧光笔没有任何快速突出显示的方法,因为索引不包含足够的信息(位置和偏移量)。它只能重新分析字段内容,截取偏移量和位置并根据该信息进行突出显示。这可能需要很长时间,尤其是对于长文本字段。

使用术语 vector ,您可以获得足够的信息,无需重新分析文本。缺点是索引的大小,它会显着增加。我必须补充一点,因为 Lucene 4.2 术语 vector 被更好地压缩并以优化的方式存储。还有新的 PostingsHighlighter,它基于在帖子列表中存储偏移量的能力,这需要更少的空间。

elasticsearch 会根据可用信息自动使用最佳方式进行突出显示。如果存储了术语 vector ,它将使用快速 vector 荧光笔,否则使用标准荧光笔。在没有术语 vector 的情况下重建索引后,将使用标准荧光笔进行突出显示。它会更慢,但索引会更小。

关于 ngram 字段,所描述的行为很奇怪,因为快速 vector 荧光笔应该对 ngram 字段有更好的支持,因此我希望得到完全相反的结果。

关于java - Elasticsearch - EdgeNgram + highlight + term_vector = 不好的亮点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11303660/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com