我使用lucene 4.7.0存储数据。我想在Lucene文档中添加对象列表。例如

Class A{
    private List<B> listOfB;
    private String  field1;
}

Class B {
    private String name;
    private String  date;
}

我想添加很简单的field1,但是如何在A的Lucene文档中存储“listofB”呢?

谢谢
桑比

最佳答案

这样做的方法有很多,有时取决于您的业务。

我们遇到了相同的情况,在这种情况下我们所做的如下:

第一

我们确定应添加到索引的字段及其类型。在这里确定字段值的类型,将其设置为单个值或列表等。

第二

如果该字段是一个像您的情况那样的对象列表,我们只需遍历该列表,然后将该对象中的每个字段添加为单独的(有时),或者将该对象字段值组合为一个String值,然后将其添加为a。

例如:

for (B b : list) {
    luceneDoc.add(new TextField(KEY, b.getName(), STORE_TYPE));
    luceneDoc.add(new TextField(KEY, b.getDate(), STORE_TYPE));
}

要么
for (B b : list) {
    luceneDoc.add(new TextField(KEY, getBfieldsValue(b), STORE_TYPE));//getBfieldsValue(b) should return a one String value from all B fields.
}

注意:我以TextField为例,您应该根据业务使用字段类型。

10-06 05:01
查看更多