Простейшая индексация Solr DIH - PullRequest
1 голос
/ 27 января 2012

Я пытаюсь индексировать данные из базы данных в Solr, используя DIH.

Поэтому я изменил два файла конфигурации следующим образом:

solrconfig.xml :

<requestHandler name="/dataimport" 
    class="org.apache.solr.handler.dataimport.DataImportHandler">
<lst name="defaults">
    <str name="config">data-config.xml</str>
</lst>
</requestHandler>

data-config.xml :

<dataConfig>
    <dataSource type="JdbcDataSource" driver="com.mysql.jdbc.Driver" url="jdbc:mysql://localhost:3306/test" user="root" password="****"/>
    <document>
        <entity name="source_scellee" query="select * from source_scellee">
        </entity>
    </document>
</dataConfig>

source_scellee - имя моей таблицы в моей тестовой базе данных.Он содержит много полей.

Очевидно, я пытаюсь запустить не что иное, как простой тест.При запуске http://localhost:8983/solr/dataimport?command=full-import&clean=false&commit=true я получаю следующий результат :

<str name="Full Dump Started">2012-01-27 12:27:01</str><str name="">Indexing completed. Added/Updated: 4 documents. Deleted 0 documents.</str><str name="Committed">2012-01-27 12:27:02</str>
<str name="**Total Documents Failed**">4</str>

Кроме того, нет ни предупреждений, ни ошибок в журналах сервера.4 - мое количество записей в таблице "source_scellee".Но он говорит, что все документы терпят неудачу.

Если я запускаю запрос с http://localhost:8983/solr/admin/, результаты вообще не появляются !!Как я могу решить это?(«: » не показывает результатов)

Спасибо за вашу помощь !!!

---- edit --- Я добавил эти строки в свою схему.xml:

<field name="ID" type="int" indexed="true" stored="true" />
    <field name="reference_catalogue"  type="string" indexed="true" stored="true"/>
    <field name="reference_capsule"  type="string" indexed="true" stored="true"/>
    <field name="organisme_certificateur"  type="string" indexed="true" stored="true" />
    <field name="reference_certificat"  type="string" indexed="true" stored="true" />
    <field name="duree_d_utilisation"  type="string" indexed="true" stored="true" />
    <field name="activite_nominale"   type="string" indexed="true" stored="true"/>
    <field name="activite_minimale"   type="string" indexed="true" stored="true"/>
    <field name="activite_maximale"   type="string" indexed="true" stored="true"/>
    <field name="coffret"  type="boolean" indexed="true" stored="true"/>
    <field name="dispositif_medical"  type="boolean" indexed="true" stored="true"/>
    <field name="forme_speciale" type="boolean" indexed="true" stored="true" />
    <field name="exemption_cpa"  type="boolean" indexed="true" stored="true"/>
    <field name="marquage_ce"  type="boolean" indexed="true" stored="true"/>
    <field name="element_cible"  type="boolean" indexed="true" stored="true"/>

Однако результат все тот же: никаких результатов при запросах (я попытался перезапустить solr и переиндексировать все)

-----второе редактирование --- Я попробовал динамический импорт. Теперь мой data-config.xml выглядит так:

<document>
       <entity name="source_scellee" query="select * from source_scellee">
            <field column="ID" name="ID_i" />
            <field column="reference_catalogue" name="reference_catalogue_s" />
            <field column="reference_capsule" name="reference_capsule_s" />
            <field column="organisme_certificateur" name="organisme_certificateur_s" />
            <field column="reference_certificat" name="reference_certificat_s" />
            <field column="duree_d_utilisation" name="duree_d_utilisation_s" />
            <field column="activite_nominale" name="activite_nominale_s" />
            <field column="activite_minimale" name="activite_minimale_s" />
            <field column="activite_maximale" name="activite_maximale_s" />
            <field column="coffret" name="coffret_b" />
            <field column="dispositif_medical" name="dispositif_medical_b" />
            <field column="forme_speciale" name="forme_speciale_b" />
            <field column="exemption_cpa" name="exemption_cpa_b" />
            <field column="marquage_ce" name="marquage_ce_b" />
            <field column="element_cible" name="element_cible_b" />
        </entity>
    </document>

Ответы [ 2 ]

1 голос
/ 27 января 2012

1.) Вы можете взглянуть на страницу статистики, чтобы увидеть, сколько документов проиндексировано прямо сейчас: http://localhost:8983/solr/admin/stats.jsp

2.) Результат вашего поиска зависит от вашего schema.xml, потому что там определяется, как документы индексируются / хранятся, какие поля обрабатываются и как выполняется поиск во время запроса. Пожалуйста, посмотрите на этот файл или опубликуйте определение поля из schema.xml, а также схему / дизайн из вашей таблицы source_scellee. У столбцов и полей одно и то же имя?

// Редактировать: это должно работать, если имя и имя файла совпадают:

<document>
       <entity name="source_scellee" 
               pk="ID"
               query="select * from source_scellee">

        </entity>
    </document>

имеет значения NULL в данных?

это зависит от поля назначения.

Ваш бегущий солр в коте или что-то в этом роде? Посмотрите на вывод Контейнера Java EE, например, catalina.out или около того.

0 голосов
/ 27 января 2012

Я почти уверен, что проблема заключается в том, как DIH пытается отобразить поля. Спасибо за добавление информации из вашего файла схемы ... Однако я считаю, что вы сделали добавленную конфигурацию, которую необходимо добавить отдельно как к schema.xml, так и к data-config.xml для DIH.

Основываясь на Примере полного импорта из Solr Wiki, я бы попробовал следующее.

schema.xml

 <field name="ID" type="int" indexed="true" stored="true" />
 <field name="reference_catalogue"  type="string" indexed="true" stored="true"/>
 <field name="reference_capsule"  type="string" indexed="true" stored="true"/>
 <field name="date_de_creation"  type="date" indexed="true" stored="true"/>
 <field name="organisme_certificateur"  type="string" indexed="true" stored="true" />
 <field name="reference_certificat"  type="string" indexed="true" stored="true" />
 <field name="duree_d_utilisation"  type="string" indexed="true" stored="true" />
 <field name="activite_nominale"   type="string" indexed="true" stored="true"/>
 <field name="activite_minimale"   type="string" indexed="true" stored="true"/>
 <field name="activite_maximale"   type="string" indexed="true" stored="true"/>
 <field name="coffret"  type="int" indexed="true" stored="true"/>
 <field name="dispositif_medical"  type="int" indexed="true" stored="true"/>
 <field name="forme_speciale" type="int" indexed="true" stored="true" />
 <field name="exemption_cpa"  type="int" indexed="true" stored="true"/>
 <field name="marquage_ce"  type="int" indexed="true" stored="true"/>
 <field name="element_cible"  type="int" indexed="true" stored="true"/>

Данные-config.xml

 <dataConfig>
     <dataSource type="JdbcDataSource" driver="com.mysql.jdbc.Driver" url="jdbc:mysql://localhost:3306/test" user="root" password="****"/>
     <document>
         <entity name="source_scellee" query="select * from source_scellee">
           <field column="ID" name="ID"/>
           <field column="reference_catalogue" name="reference_catalogue"/>
           <field column="reference_capsule" name="reference_capsule"/>
           <field column="date_de_creation" name="date_de_creation"/>
           <field column="organisme_certificateur" name="organisme_certificateur"/>
           <field column="reference_certificat" name="reference_certificat"/>
           <field column="duree_d_utilisation" name="duree_d_utilisation"/>
           <field column="activite_nominale" name="activite_nominale"/>
           <field column="activite_minimale" name="activite_minimale"/>
           <field column="activite_maximale" name="activite_maximale"/>
           <field column="coffret" name="coffret"/>
           <field column="dispositif_medical" name="dispositif_medical"/>
           <field column="forme_speciale" name="forme_speciale"/>
           <field column="exemption_cpa" name="exemption_cpa"/>
           <field column="marquage_ce" name="marquage_ce"/>
           <field column="element_cible" name="element_cible"/>
         </entity>
     </document>
 </dataConfig>

Существует способ настроить файл schema.xml для динамического добавления полей, с которыми он сталкивается, с помощью некоторых соглашений об именах. Пожалуйста, смотрите подробности Динамические поля в Solr Wiki для более подробной информации и некоторых примеров того, как это можно сделать.

...