在Schema less solr中存储Java对象

时间:2016-11-16 14:59:52

标签: java solr

思想:

使用将POJO转换为平面地图 ObjectToMapTransformer

并从地图中形成solrinputdocument并将其存储在Solr中。

检索时从Solr获取文档并使用MapToObjectTransformer将文档转换为地图和POJO

问题:

在将SolrinputDocument保存到Solr时,POJO的TimeUnit之类的展平键在Solr中转换为A.B[0].c

Solr中的这种替代存储形式使得很难将solrDocument反序列化为POJO。

如何解决这个问题?或者在Solr中存储可查询文档的替代方法是什么,可以轻松地反序列化和序列化。

1 个答案:

答案 0 :(得分:1)

您通常使用要将该字段编入索引的相应Solr字段包装POJO中的字段。见Mapping a POJO for Solr

如果确实想要将整个对象序列化为Solr,请将其序列化为单个字段,如果可能,请使用字符串字段(因为它将直接存储您的对象)。如果你想在对象中实际搜索字符串值,你可以使用文本字段 - 但由于所有内容都被导入到单个字段中,因此会有一些限制(例如,如果你想要对不同的字段进行评分或搜索来自对象的单个属性中的值。)

所以:Use the @Field annotation from SolrJ.beans执行特定的POJO处理,或将其分解为单个字段并在该字段中搜索字符串。