Apache Solr – import danych z użyciem bazy MySQL

Apache Solr – import danych z użyciem bazy MySQL

W tym wpisie zaimportujemy dane dotyczące komentarzy z witryny JavaLeader.pl do silnika wyszukiwania pełnotekstowego Apache Solr. Nie jest to prosta konfiguracja ponieważ należy zrealizować kilka kroków które opisane są w dokumentacji.

W pierwszym kroku należy pobrać sterownik do bazy danych MySQL ze strony http://dev.mysql.com/downloads/file/?id=488445 – plik mysql-connector-java-8.0.17.jar a następnie umieścić go w lokalizacji:

solr-8.2.0\solr-8.2.0\contrib\dataimporthandler\lib

(jeśli katalog \lib nie istnieje to należy go utworzyć).

Uruchamiamy serwer Apache Solr oraz tworzymy nowy core – comments:

solr-8.2.0\solr-8.2.0\bin>solr start
solr-8.2.0\solr-8.2.0\bin>solr create -c comments

Edytujemy plik – solrconfig.xml który znajduje się w katalogu:

solr-8.2.0\solr-8.2.0\server\solr\comments\conf
<lib dir="${solr.install.dir:../../../..}/contrib/extraction/lib" regex=".*\.jar" />
<lib dir="${solr.install.dir:../../../..}/dist/" regex="solr-cell-\d.*\.jar" />
 
<lib dir="${solr.install.dir:../../../..}/contrib/clustering/lib/" regex=".*\.jar" />
<lib dir="${solr.install.dir:../../../..}/dist/" regex="solr-clustering-\d.*\.jar" />
 
<lib dir="${solr.install.dir:../../../..}/contrib/langid/lib/" regex=".*\.jar" />
<lib dir="${solr.install.dir:../../../..}/dist/" regex="solr-langid-\d.*\.jar" />
 
<lib dir="${solr.install.dir:../../../..}/contrib/velocity/lib" regex=".*\.jar" />
<lib dir="${solr.install.dir:../../../..}/dist/" regex="solr-velocity-\d.*\.jar" />
<lib dir="${solr.install.dir:../../../..}/dist/" regex="solr-ltr-\d.*\.jar" />
 
<!-- poniższe dwie linijki zostały dodane -->
 
<lib dir="${solr.install.dir:../../../..}/contrib/dataimporthandler/lib" regex=".*\.jar" />
<lib dir="${solr.install.dir:../../../..}/dist/" regex="solr-dataimporthandler-.*\.jar" />

Do tego samego pliku dodajemy następujący wpis:

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

W tym samym folderze tworzymy plik data-config.xml o zawartości która stanowi dane dotyczące połączenia do bazy bazy danych:

<dataConfig>
<dataSource type="JdbcDataSource"
        driver="com.mysql.jdbc.Driver"
        url=""
        user=""
        password=""/>
<document>
<entity name="products"
        pk="id"
        query="select comment_id ,comment_author,comment_content,comment_date from wp_comments"
        deltaImportQuery="SELECT comment_id , comment_author, comment_content, comment_date from wp_comments WHERE id='${dih.delta.id}'"
        deltaQuery="SELECT comment_id FROM wp_comments where comment_date > '${dih.last_index_time}'">
<field column="comment_id " name="comment_id "/>
<field column="comment_author" name="comment_author"/>
<field column="comment_content" name="comment_content"/>
<field column="comment_date " name="comment_date "/>
</entity>
</document>
</dataConfig>

W pliku managed-schema w lokalizacji:

server\solr\comments\conf

dodajemy wpisy:

<field name="comment_id" type="text_general" indexed="true" stored="true"/>
<field name="comment_author" type="text_general" indexed="true" stored="true"/>
<field name="comment_content" type="text_general" indexed="true" stored="true"/>
<field name="comment_date" type="text_general" indexed="true" stored="true"/>

Jeśli chcemy teraz wyczyścić zaimportowane dane (bez usuwania ich oczywiście z bazy danych):

W pliku:

C:\Users\EMAWARY\Downloads\solr-8.2.0\solr-8.2.0\server\solr\comments\conf\solrconfig.xml

należy dodać:

 <requestParsers enableRemoteStreaming="true"
    enableStreamBody="true"
    multipartUploadLimitInKB="-1"
    formdataUploadLimitInKB="-1"
    addHttpRequestToContext="false"
/>

oraz wywołać następującego endpointa:

http://localhost:8983/solr/comments/update?stream.body=<delete><query>*:*</query></delete>&commit=true

gdzie comments to nazwa core.

Pod adresem zobaczyć można wszystkie komentarze w formacie json:

http://localhost:8983/solr/comments/select?q=*:*

Leave a comment

Your email address will not be published.


*