Lucene:访问查询结果的有效负载

Lucene:访问查询结果的有效负载,lucene,token,payload,Lucene,Token,Payload,当我在Lucene中搜索查询时,我收到一个文档列表作为结果。但是我怎样才能在这些文件中找到这些信息呢?我想访问这些单词的有效负载,它在查询中找到 如果查询只包含一个术语,则只需使用TermPositions即可访问该术语的有效负载。但是如果您有一个更复杂的查询,包括短语搜索、邻近搜索。。。您不能只在TermPositions中搜索单个术语 我希望收到一个列表、令牌流或类似的东西,其中包含查询找到的所有令牌。然后我可以遍历列表并访问每个令牌的有效负载。我想您应该先看看Lucene荧光笔,因为它突出

当我在Lucene中搜索查询时,我收到一个文档列表作为结果。但是我怎样才能在这些文件中找到这些信息呢?我想访问这些单词的有效负载,它在查询中找到

如果查询只包含一个术语,则只需使用
TermPositions
即可访问该术语的有效负载。但是如果您有一个更复杂的查询,包括短语搜索、邻近搜索。。。您不能只在
TermPositions
中搜索单个术语


我希望收到一个
列表
令牌流
或类似的东西,其中包含查询找到的所有令牌。然后我可以遍历列表并访问每个令牌的有效负载。

我想您应该先看看Lucene荧光笔,因为它突出显示了文档中的匹配项。

我想您应该先看看Lucene荧光笔,因为它突出显示了文档中的匹配项。

我使用span查询解决了我的问题。几乎每个查询都可以表示为SpanQuery。span查询允许访问文档中命中的span。因为普通的QueryParser不生成span查询,所以我必须编写自己的解析器,只创建span查询。另一个选项是Lucene Contrib提供的SurroundParser,它还可以创建span查询。

我使用span查询解决了我的问题。几乎每个查询都可以表示为SpanQuery。span查询允许访问文档中命中的span。因为普通的QueryParser不生成span查询,所以我必须编写自己的解析器,只创建span查询。另一个选择是Lucene Contrib提供的SurroundParser,它还可以创建SpanQueries。

Lucene Highlighter做得很好,但我仍然无法访问有效负载。我想写我自己的格式化程序。荧光灯正在将令牌组传递给格式化程序。当我调用令牌组中令牌的getPayload()函数时,我总是收到null。但当我通过Term Positions访问有效负载时,它就开始工作了。为什么它对代币不起作用?我用于荧光灯的整个令牌流没有Payload属性。它s始终为空。我使用以下代码获取令牌流:TokenStream TokenStream=TokenSources.getAnyTokenStream(searcher.getIndexReader(),id,“contents”,analyzer);你必须做不同的事情吗?Lucene Highlighter做得很好,但我仍然无法访问有效负载。我想写我自己的格式化程序。荧光灯正在将令牌组传递给格式化程序。当我调用令牌组中令牌的getPayload()函数时,我总是收到null。但当我通过Term Positions访问有效负载时,它就开始工作了。为什么它对代币不起作用?我用于荧光灯的整个令牌流没有Payload属性。它s始终为空。我使用以下代码获取令牌流:TokenStream TokenStream=TokenSources.getAnyTokenStream(searcher.getIndexReader(),id,“contents”,analyzer);你必须用不同的方式吗?