java - 如何使用 Solr/Lucene 序列化/反序列化 map ?

标签 java solr lucene spring-data spring-data-solr

我是 solr 新手,当我尝试在 Solr 中序列化/反序列化 Map 时遇到问题。

我在 Java 应用程序中使用 Spring Data Solr,如下所示:

@Field("mapped_*")
private Map<String, String> values;

它在 Solr 中展平并序列化我的 map ,如下所示:

"key1" : "value1"
"key2" : "value2"
...

但是,当我运行搜索时,返回的对象始终将此字段设置为 NULL。反序列化不适用于该特定字段,看起来它无法将 key1、key2... 识别为 Map 的一部分。

有人知道如何进行反序列化吗?我必须实现自定义转换器吗?

最佳答案

此时 Spring Data Solr 不会自动使用给定的 @Field#value 为映射中包含的值添加前缀,而只会使用 Map#key 作为字段名。有一个改进 ( DATASOLR-202 ) 打开。

此时,values 中包含 key1key2、.. 要求字段名称为 key*为了正确读回值。

@Field("key*")
private Map<String, String> values;

关于java - 如何使用 Solr/Lucene 序列化/反序列化 map ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29307653/

相关文章:

java - 为什么 toList() 不直接在 Java 8 Stream 上

java - Java 中的 Arraylist 和 toString

SolrCloud:无法创建集合,锁定问题

java - 在 Java 中使用 OpenCV 进行减法

java - Web服务上传图片url

lucene - 如何根据地理位置进行 Lucene.Net 搜索本地结果?

elasticsearch - 离线删除Elasticsearch索引

search - Lucene "Or Queries"

mysql - 对于地理空间索引,Solr 和 MongoDB 在功能上有什么区别?

python - 使用 zc.buildout 从 Django 添加到 solr 索引时出现问题