多值多类型场的solr指数

时间:2013-05-04 04:03:24

标签: search solr indexing

我正在使用下一个结构索引xml文档的集合:

<mydoc>
  <id>1234</id>
  <name>Some Name</name>
  <experiences>
    <experience years="10" type="Java"/>
    <experience years="4" type="Hadoop"/>
    <experience years="1" type="Hbase"/>
  </experiences>
</mydoc>

有没有办法创建solr索引,以便它支持下一个查询:

find all docs with experience type "Hadoop" and years>=3

到目前为止,我最好的想法是将分隔年份||类型放入multiValued字符串字段,搜索所有类型为“Hadoop”的文档,然后遍历结果以选择年份&gt; = 3。显然,对于大量文档来说,这是非常低效的。

1 个答案:

答案 0 :(得分:0)

我认为没有明显的解决方案来索引来自多对多关系的数据。在这种情况下,我会使用动态字段:http://wiki.apache.org/solr/SchemaXml#Dynamic_fields

schema.xml中的字段定义:

<dynamicField name="experience_*" type="integer"  indexed="true"  stored="true"/>

所以,使用你的例子,你最终会得到这样的东西:

<mydoc>
  <id>1234</id>
  <name>Some Name</name>
  <experience_Java>10</experience_Java>
  <experience_Hadoop>4</experience_Hadoop>
  <experience_Hbase>1</experience_Hbase>
</mydoc>

然后您可以使用以下查询:fq=experience_Java:[3 to *]