dynamic - Solrj 和动态字段

标签 dynamic map field pojo solrj

我有一个 solr 模式,其中包含不同类型的动态字段。例如,在 schema.xml 中有:

<dynamicField name="*_s" type="string" indexed="true"  stored="true"/>
<dynamicField name="*_i" type="int"    indexed="true"  stored="true"/>
<dynamicField name="*_l" type="long"   indexed="true"  stored="true"/>
<dynamicField name="*_f" type="float"  indexed="true"  stored="true"/>
<dynamicField name="*_d" type="double" indexed="true"  stored="true"/>

我想使用 SolrJ 注释的 POJO 访问这些字段。我知道我可以为 POJO 中的每种数据类型使用不同的 Map 引用,如下所示:

...
@Field("*_s")
public Map<String, String> strings;

@Field("*_i")
public Map<String, Integer> integers;
...

但是是否可以将所有动态字段存储在同一个 map 中?我在想这样的事情:

...
@Field("*_s")
@Field("*_i")
public Map<String, Object> dynamicFields;
...

我能找到的关于 SolrJ、POJO 和动态字段的唯一文档是一个旧的功能请求:
https://issues.apache.org/jira/browse/SOLR-1129

最佳答案

我计算出@Field 注释中“模式”值的匹配不必与您的schema.xml 中的匹配。所以,我在我的 doc 类中定义了一个 map :

@Field("*DF")
private Map<String, Object> dynamicFields;

然后在 schema.xml 中,dynamicFields 具有后缀为“DF”的模式:

<dynamicField name="*_sDF" type="string" indexed="true" stored="true"/>
<dynamicField name="*_siDF" type="sint" indexed="true" stored="true"/>
<dynamicField name="*_tDF" type="date" indexed="true" stored="true"/>

现在使用 solrServer.addBean(doc) 和 solrResponse.getBeans(Doc.class) 存储和检索具有不同值类型的所有 dynamicField。这是使用 Solr 3.2.0 它不适用于 1.4 ..

关于dynamic - Solrj 和动态字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6238181/

相关文章:

java - 如何使用 JSP 动态添加复选框

apache-flex - 在 AS3 中组合/合并动态对象

python - Odoo 11.0 使字段独一无二

scala - 线程安全地变换可变映射中的值

java - 如何使用 Tiled 对象层?

python - 在 Python 中绘制粒子在速度场内的运动并制作动画

javascript - 动态获取redux表单的字段

iphone - 使用 Xcode 的动态内容

c++ - 动态分配其中包含 vector 的结构

java - 我可以在 HashMap 中通过 Key 实现类型安全吗?