- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我目前正在开发一个使用 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/
我有一个关于 lucene 标记化过程的基本问题: TokenStream tokenStream = analyzer.tokenStream(fieldName, reader); Term
给定一个字符串 (str),如何在 Rust 中将其转换为 TokenStream? 我试过使用 quote! 宏。 let str = "4"; let tokens = quote! { let
我有一个需要来自 token 流的字段;它不能用字符串实例化然后分析为标记。例如,我可能想将多个列(在我的 RDBMS 中)的数据组合到单个 Lucene 字段中,但我想以自己的方式分析每个列。因此,
问题 我目前正在开发一个使用 Lucene 8.1.0 的项目,纯 Lucene - 而不是 Solr。我想为根据用户查询显示的结果添加突出显示。我面临的问题是我无法找到获取指定文档上字段的 Toke
在应用程序中,我收到一个应用过滤器的文本,我想将此过滤结果存储到 lucene Document 对象中。我不关心原文。 String stringToProcess = "..."; TokenSt
我正在尝试了解 ANTLR4 token ,但我对 token 字符串表示有疑问。考虑以下简单语法: grammar Test; init: integer IDENTIFIER; integer:
我正在使用 Lucene 4.6,并且显然不清楚如何重用 TokenStream,因为我得到了异常: java.lang.IllegalStateException: TokenStream cont
我的问题既是语言实现问题,也是 ANTLR4 API 问题。 有什么办法可以修改 ParseTree 及其附带的 TokenStream 吗? 这是场景。我有一种定义数据流程序的简单语言。您可以在gi
我已经使用 antlr 4 创建了一个词法分析器来标记土耳其语自然语言文本,我需要做的是有一个标记流,我可以一个一个地获取标记。如果我像这样使用 CommonTokenStream 会返回一个列表:
我刚开始使用 Lucene,我觉得我一定对它有根本的误解,但是从示例和文档中我无法弄清楚这个问题。 我似乎无法让 Lucene 为使用 TokenStream 初始化的字段返回结果,而使用 strin
我编写了一个使用 ASCIIFoldingFilter 的自定义分析器,以便将位置名称中的扩展拉丁语集减少为常规拉丁语。 public class LocationNameAnalyzer exten
使用 antlr,我正在尝试为这样的树制作一个 TreeWalker: 输入:int x = 3 输出 AST:^(VARDEF int x 3) 我的解析器工作得很好并且还生成了一个如上所示的 AS
我正在尝试使用 Apache Lucene 进行标记,我对从 TokenStream 获取 token 的过程感到困惑。 最糟糕的是,我正在查看 JavaDocs 中解决我问题的评论。 http://
我使用 Lucene.NET3.0.3 如何获得 TermAttribute.I 尽我所能,但我无法获得 这里来源: Analyzer analyzer = new Lucene.Net.An
我正在尝试从 Python 序列构建 TokenStream。只是为了好玩,我希望能够将我自己的 token 直接传递给 pylucene.Field("MyField", MyTokenStream
我目前正在学习“The Definitive ANTLR 4 Reference”的“Building a Translator with a Listener”教程,但我正在使用 C# 并将示例翻译
我一直在考虑从 2.4 升级到 2.9,并注意到所有处理属性的人为代码。只是想知道是否有人有任何意见,考虑到它是 .9,这是否会改变,而当 3.0 出来时,事情会改变。 我很困惑如何通过反射创建属性并
使用 Appache Lucene TokenStream 去除停用词导致错误: TokenStream contract violation: reset()/close() call missin
我正在使用 Lucene 的功能来构建一种简单的方法来匹配文本中的相似单词。 我的想法是在我的文本上运行一个 Analyzer 以提供 TokenStream,并且对于每个 token ,我运行一个
由于各种原因,我必须使用最新版本的 Lucene API。 API 还没有很好的文档记录,所以我发现自己无法执行简单的 addDocument() 这里是Writer初始化: analyzer = n
我是一名优秀的程序员,十分优秀!