我已经在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());
}
这是“很好”的全部,但只返回每个匹配的有效负载本身,但没有找到实际的单词,这是一种麻烦。
非常感谢任何帮助。
答案 0 :(得分:0)
您可以从PayloadSpanUtil.getPayloadsForQuery()复制代码,其中您将SpanTermQuery替换为自己的实现,这是SpanTermQuery的子类。您可以通过使用术语查询的实际术语来丰富超级类中的有效负载。