java - 在 Schema less solr 中存储 Java 对象

标签 java solr

想法:

使用以下方法将 POJO 转换为平面 map ObjectToMapTransformer

并从 map 中形成一个 solrinputdocument 并将其存储在 Solr 中。

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

问题:

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

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

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

最佳答案

您通常使用要将该字段索引到的相应 Solr 字段来包装 POJO 中的字段。请参阅Mapping a POJO for Solr

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

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

关于java - 在 Schema less solr 中存储 Java 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40635336/

相关文章:

java - 如何替换执行 ActionForward 方法

java - eclipse的maven插件有捆绑maven软件吗?

java - 使用 Zookeeper 主机字符串对 Solr Cloud 进行身份验证

solr - 多字同义词和奇数 token 顺序

ruby-on-rails - 什么数据库用于 15M 记录和快速搜索索引

java - Android - 恢复相机 Activity 被延迟

java - 如何在 Java 中编译并运行 .java 文件?

java - 在单个 JAR 中包含从属 Jar

java - Alfresco Solr 查询内容

http - 获取荷兰语格式的页面内容