使用Lucene Highlighter基础设施标记任意文本

时间:2012-11-21 23:14:04

标签: lucene highlight

我在客户端 - 服务器架构中使用Lucene 3.5,如下所示:客户端向服务器发出查询。服务器返回查询中使用的术语列表,以及命中列表,包括应用Highlighter生成的片段到检索到的文档。然后,用户可以请求显示完整文档。本文档来自另一项服务,该服务是我正在构建的系统的一部分。

当显示请求的文档时,我想突出显示用于检索它的相同术语。我可以编写其他代码来执行此操作而不涉及Lucene基础结构,但由于我已经有代码来生成代码片段,所以我希望能够重用它。 (干和所有这些。)

所以我的问题是如何最好地执行此操作:当需要使用搜索结果标记文档时,客户端具有用于检索文档的一组术语以及检索到的文档的ID。它还知道文档中的哪些字段可以使用查询字词进行标记。

一些可能的策略:

  1. 创建一个查询过滤器,仅选择所需文档,然后仅在该文档上重新运行查询。

  2. 以某种方式(如何?)构建一个Scorer,它不依赖于Query,但可以用我已经拥有的术语播种。

  3. 完全跳过Lucene基础设施。

  4. 还有什么?

1 个答案:

答案 0 :(得分:0)

我相信您可以使用TermVector索引文档,这将告诉您原始文档中每个字词的位置。突出显示琐碎。或者只是重复使用contrib highlighter