在Solr中处理多个实体

时间:2015-03-04 06:56:58

标签: java apache solr lucene schema

虽然我是SOLR的新手,但我能够成功索引单个表 在很短的时间内。现在我们有搜索的要求 需要同时在多个表(多表索引)上发生。

我无法找到一种方法来索引SOLR中的多个表并进行搜索 在索引数据上。我尝试使用下面的数据配置格式,但它 只索引2个表中的任何一个(而不是两个表)。

DB-config.xml中

 <dataConfig>
 <dataSource driver="com.metamatrix.jdbc.MMDriver" url="jdbc:....." />
 <document name="doc">
 <entity name="table1"
  query="select * from table1">
 <field column="ID" name="ElementID" />
 <field column="Name" name="ElementName" />
 <field column="ElementType" name="ElementType" />
 <field column="RepId" name="ElementRepId" />
</entity>

<entity name="table2"
query="select * from table2">
<field column="id" name="ElementPropertyID" />
<field column="Name" name="ElementPropertyName" />
<field column="DataType" name="ElementPropertyDataType" />
<field column="RepId" name="ElementPropertyRepId" />

</entity>
</document>
</dataConfig>

Schema.xml

<fields>

<field name="ElementID" type="string" indexed="true"
stored="true" />
<field name="ElementName" type="string" indexed="true"
stored="true" />
<field name="ElementType" type="string" indexed="true"
stored="true" />
<field name="ElementRepId" type="string" indexed="true"
 stored="true" />

<field name="ElementPropertyID" type="string" indexed="true"
 stored="true" />
<field name="ElementPropertyName" type="string" indexed="true"
 stored="true" />
<field name="ElementPropertyDataType" type="string"
 indexed="true" stored="true" />
<field name="ElementPropertyRepId" type="string" indexed="true"
 stored="true" />


 <dynamicField name="*" type="ignored" />
 </fields>

 <uniqueKey>ElementPropertyID</uniqueKey>

任何人都可以帮我解决问题的解决方案/指针。

1 个答案:

答案 0 :(得分:0)

我认为这是因为你有两个独立的实体。 table1和table2之间是否有任何关系? 如果是,那么使用可以解决问题的连接进行单个查询。

有关DataImportHandler的更多信息,请参阅以下链接。 http://wiki.apache.org/solr/DataImportHandler#Oracle_Example