索引DB中的多个非关系表

时间:2017-04-27 08:09:21

标签: solr dataimporthandler solr6

我使用solr6.4.X索引mysql数据。我为此设置了dataimporthandler。问题是只要我们在DB中有关系表它工作正常,但我有~10个表,它们之间没有任何关系。

我尝试将它们添加为看似实体,但由于某些未知原因,它无效。所以基本上我需要2点观点:

  • 通过dataimporthandler将非关系表存储到Solr中
  • 从各个表中检索数据(我使用Solrj查询数据)。

非常感谢任何帮助。感谢

1 个答案:

答案 0 :(得分:0)

不确定DIH设置中的问题是什么,但是有几个实体,每个表一个,表中没有关系的表是完全没问题的。工作没有任何问题。你的问题肯定是可以解决的。

在不了解您的问题的情况下,一个猜测:人们在该场景中遇到的典型问题是他们使用每个表中的pk作为Solr doc id,并且他们在Solr端相互覆盖。您必须将表中唯一的内容附加到solr id,以便它们在Solr中是唯一的。

编辑:是的,问题是我猜到的,你有这个:

<entity name="encounter_notes" pk="id" query="SELECT * from encounter_notes">
        <field column="id" name="id" />
        <field column="encouter_id" name="encouter_id" />

每个实体的id将相互覆盖,对所有表执行此操作:

<entity name="encounter_notes" pk="id" query="SELECT CONCAT('notes_',id) as id, ... from encounter_notes">
        <field column="id" name="id" />
        <field column="encouter_id" name="encouter_id" />  

所以你有这样的ID:notes_1,notes_2,financial_class_1 ...