Lucene MultiValue在MultiValueField上进行分组

时间:2016-02-24 12:29:31

标签: java lucene

我有一个文档的树结构,文档中有多个父项。 在索引时使用多值字段将其映射到Lucene索引中:

Document doc = new Document();
doc.add(new Field("uuid","value",MYFIELDTYPE.NOTANALYZED);
doc.add(new Field("parent","parent",MYFIELDTYPE.NOTANALYZED);
doc.add(new Field("parent","parent",MYFIELDTYPE.NOTANALYZED);
......
indexwriter.addDocument(doc)

然后我需要对结果进行分组,我得到树的最常见的父亲作为我的最终结果。我面临一个问题,因为父字段只包含直接父节点,这个直接父节点也以相同的方式存储在索引中但在收集文档时我不知道如何在collect(ind docID)内访问它 我可以通过插入地图来访问字段和组,但是如果组中的两个元素具有相同的父组,则如何组。此外,如果欢迎对索引进行更改

树看起来像这样

                 Root1(Field1,UUID,parent)           Root2(Field,UUID,parent)
                 /                    \               /          \
                /                      \             /            \
             child1(content,           child2(content,          child3(content
             UUID,parent)              UUID,parent)             UUID,parent)
             /          \
            /            \
       child4(content,    child5(content,
       UUID,parent)       UUID, parent)

这是一个非常小的树例子,但树会有更多的孩子。例如,如果针对内容字段的查询命中,则表明4,5和2都是命中,那么我希望将Root1作为结果,并且组中的所有1,2,4,5都是如此。

0 个答案:

没有答案