gpt4 book ai didi

java - 如何获取文档字段的 TokenStream 以用于突出显示?

转载 作者:行者123 更新时间:2023-12-02 02:00:16 26 4
gpt4 key购买 nike

问题

我目前正在开发一个使用 Lucene 8.1.0 的项目,纯 Lucene - 而不是 Solr。我想为根据用户查询显示的结果添加突出显示。我面临的问题是我无法找到获取指定文档上字段的 TokenStream 的方法。我尝试访问的字段使用术语 vector 以及其他 FieldType 参数进行索引。

我尝试了什么

official documentation TokenSources 类上列出了几乎所有过去使用的方法,作为已弃用。我进行了广泛的搜索,我发现的所有指南/帖子都相对较旧,并且它们都使用 TokenSources 和已弃用方法之一。我愿意使用函数 getTermVectorTokenStreamOrNull() 但我不明白如何使用 Fields 参数以及要传递的内容。 (我无法实例化 Fields 对象,因为它是抽象的,并且没有任何直接已知的子类对我或如何使用它们有意义)。

我当前的解决方案是通过以下方式获取TokenStream:

String text = hit.get(field.label);
Analyzer analyzer = new ClassicAnalyzer();
TokenStream tokenStream = analyzer.tokenStream(field.label, text);
TextFragment[] fragments = highlighter.getBestTextFragments(tokenStream, text, false, 5);

我真正需要帮助的是,如何使用字段的术语 vector 以及如何获取 TokenStream 来设置 Highlighter
如果你认为这是错误的,我应该使用 here 中的 getBestFragments​(Analyzer detector, String fieldName, String text, int maxNumFragments) 方法,那么这意味着我不需要术语 vector 。但据我所知,使用术语 vector 有助于提高搜索时间的性能,并权衡索引大小。您有什么建议?
提前致谢!

最佳答案

找到了我的问题的解决方案。我缺少的是 TokenStreamFromVector类(class)。 TokenStreamFromVector 扩展了 TokenStream,因此我可以将其插入 getBestFragments() 方法。
把这个留给那些迷路并寻找同样东西的人。翻阅USE选项卡确实有帮助,但我不知道为什么 TokenStreamFromVector 没有作为 TokenStream 中的子类链接页面。
(我知道它位于不同的包中,但仍然无法通过正常工作流程快速到达 TokenStreamFromVector 页面。)

关于java - 如何获取文档字段的 TokenStream 以用于突出显示?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57378100/

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