【问题标题】:Get query terms from Lucene query for highlighting从 Lucene 查询中获取查询词以突出显示
【发布时间】:2010-10-07 20:37:16
【问题描述】:

我的 Lucene 查询通常包含一堆 AND 组合字段。 是否可以再次从 Query 对象中取出查询到的字段?

【问题讨论】:

    标签: c# lucene.net highlighting full-text-search


    【解决方案1】:

    您的意思是提取术语或字段名称吗?由于您已经知道您正在处理 BooleanQuery,因此要提取字段,您可以简单地迭代 BooleanQuery.getClauses() 返回的 BooleanClause 数组,将每个子句重写为其基本查询 (Query.rewrite) 并递归应用,直到您有一个 TermQuery在你的手上。

    如果您确实是指术语提取,我不确定 Lucene.NET,但在 Java Lucene 中,您可以使用 org.apache.lucene.search.highlight.QueryTermExtractor;你将一个(重写的)查询传递给它的一个 getTerms 重载并获得一个 WeightedTerms 数组。

    据我所知,使用这种技术的缺点是:

    • 由于它在内部使用术语集,它不会处理相同标记的多个实例,例如“梦中之梦”
    • 它仅支持基本查询类型(TermQuery、BooleanQuery 和任何其他支持 Query.extractTerms 的查询类型)。我相信我们已经在内部将它用于 SpanNearQuery 和 SpanNearOrderedQuery 实例,但我可能错了。

    不管怎样,我希望这足以让你开始。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-05-18
      • 1970-01-01
      • 1970-01-01
      • 2020-07-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-04-26
      相关资源
      最近更新 更多