我使用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为例,您应该根据业务使用字段类型。