在Lucene 4.6.x中获得搜索结果中的有效负载

时间:2014-02-13 21:26:03

标签: lucene

我已经在lucene索引中正确插入了有效负载:

addDoc(w, "Lucene|1 in|2 Lucene|3 Action", "193398817");
addDoc(w, "Lucene|1 for|2 Dummies", "55320055Z");
addDoc(w, "Managing Gigabytes", "55063554A");
addDoc(w, "The Art|2 of Computer Science Lucene|18", "9900333X");

单词之后的数字,是有效载荷(简化为我们以后需要的)

我在“Lucene in”中做了一个简单的QueryParser作为测试。 正如预期的那样,我在结果中得到3个文件。

当我得到结果时,我需要在每个文档中使用其有效负载获得所有匹配。

最后,这些有效负载将需要类似于高亮显示的内容,但不适用于HTML。

现在我试过了:

PayloadSpanUtil spanUtil = new PayloadSpanUtil(searcher.getIndexReader().getContext());
Collection<byte[]> payloads = spanUtil.getPayloadsForQuery(q);
{
BytesRef ref = new BytesRef(payload);
System.out.println("PAYLOAD: "+ref.utf8ToString());
}

这是“很好”的全部,但只返回每个匹配的有效负载本身,但没有找到实际的单词,这是一种麻烦。

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

您可以从PayloadSpanUtil.getPayloadsForQuery()复制代码,其中您将SpanTermQuery替换为自己的实现,这是SpanTermQuery的子类。您可以通过使用术语查询的实际术语来丰富超级类中的有效负载。