индексирование таблиц Mtille в Solr с использованием DIH - PullRequest
0 голосов
/ 15 июня 2011

Я разрабатываю поисковую систему, используя Solr, и мне удалось индексировать данные из одной таблицы с помощью DIH (Dataimport Handler). Мне нужно получить результаты поиска из 5 различных таблиц. Я не мог сделать это без помощи.

если мы предположим, что x таблица с x строками, то должно быть x * x документов из каждой таблицы, что приводит к 5x документам, если у меня всего 5 таблиц. В dataconfig.xml я создал 5 отдельных объектов в одном документе, как показано ниже. результат из индексированных данных, когда я запрашиваю *:*, состоит только из 6 пользователей сущности и 3 из классов сущности, что представляет собой общее количество строк пользователя, равное 9.

Ясно, что этот способ не работал для меня, так как я могу добиться этого, используя только одно ядро?

примечание: я следовал учебнику DIHQuickStart и DIH , который мне не помог.

<document>
    <!-- Users -->
    <entity dataSource="JdbcDataSource" name=" >
            <field column="name" name="name" sourceColName="name" />
            <field column="username" name="username" sourceColName="username"/>
            <field column="email" name="email" sourceColName="email" />
            <field column="country" name="country" sourceColName="country" />
    </entity>

<!-- Classes -->
    <entity dataSource="JdbcDataSource" name="classes" >
            <field column="code" name="code" sourceColName="code" />
            <field column="title" name="title" sourceColName="title" />
            <field column="description" name="description" sourceColName="description" />
    </entity>

    <!-- Schools -->
    <entity dataSource="JdbcDataSource" name="schools" >
            <field column="school_name" name="school_name" sourceColName="school_name" />
            <field column="country" name="country" sourceColName="country" />
            <field column="city" name="city" sourceColName="city" />
    </entity>

    <!-- Resources -->
    <entity dataSource="JdbcDataSource" name="resources" >
            <field column="title" name="title" sourceColName="title" />
            <field column="description" name="description" sourceColName="description" />
    </entity>

    <!-- Tasks -->
    <entity dataSource="JdbcDataSource" name="tasks"  >
            <field column="title" name="title" sourceColName="title" />
            <field column="description" name="description" sourceColName="description" />
    </entity>

</document>    

1 Ответ

1 голос
/ 15 июня 2011

вам нужно посмотреть на структуры ваших таблиц, а затем либо создавать запросы с объединениями, либо создавать вложенные сущности, например, такие как

<dataConfig>
<dataSource driver="org.hsqldb.jdbcDriver" url="jdbc:hsqldb:/temp/example/ex" user="sa" />
    <document name="schools">
        <entity name="school" query="select * from schools s ">
            <field column="school_name" name="school_Name" />       
        <entity name="school_class" query="select * from schools_classes sc where sc.school_name = '${school.school_name}'">
        <field column="class_code" name="class_code" />     
        <entity name="class" query="select class_name from classes c where c.class_name= '${school_class.class_code}'">
           <field column="class_name" name="class_name" />      
        </entity>
        </entity>
        </entity>
    </document>
</dataConfig>
...