0

我正在索引具有下一个结构的 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

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

4

1 回答 1

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 *]

于 2013-05-04T08:47:46.900 回答