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