都内で働くSEの技術的なひとりごと / Technical soliloquy of System Engineer working in Tokyo

都内でサラリーマンやってます。SQL Server を中心とした (2023年からは Azure も。) マイクロソフト系(たまに、OSS系などマイクロソフト以外の技術も...)の技術的なことについて書いています。日々の仕事の中で、気になったことを技術要素関係なく気まぐれに選んでいるので記事内容は開発言語、インフラ等ばらばらです。なお、当ブログで発信、発言は私個人のものであり、所属する組織、企業、団体等とは何のかかわりもございません。ブログの内容もきちんと検証して使用してください。英語の勉強のため、英語の

SQL Server の全文検索がまだまだ発展途上なため、Apache Solr を試してみる - その2 ( SQL Server のデータを抜いて、インデックスを作成してみる ) -

 長らく検証していなかった、Solr。前回は、ただインストールしただけで終わっていました。ryuchan.hatenablog.com

 今回は、SQL Server のデータを Solr 側にインポートします。では、早速やってみましょう。まずは、JDBC ドライバーのダウンロード♪ここ数年間はすっかりマイクロソフトの人になってしまったので、JDBC という響きは8年ぶりです。あ、今回使用した環境は、SQL Server 2014 です。

  • sqljdbc41.jar を 【インストールディレクトリ】\lib 配下にコピーしましょう。
    f:id:koogucc11:20150628231657p:plain
  • 【インストールディレクトリ】\solr\【コアディレクトリ】\conf 配下に移動します。
    f:id:koogucc11:20150628232114p:plain
  • conf\solrconfig.xml に下記の定義を追加します。

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

  • conf\data-config.xml を作成し、ファイルの構成を下記のように変更します。今回使用するデータベースは、AdventureWorks2014、テーブルは、Production.ProductReviewです。

    <?xml version="1.0" encoding="UTF-8" ?>
    <dataConfig>
        <dataSource driver="com.microsoft.sqlserver.jdbc.SQLServerDriver"
                    type="JdbcDataSource"
                    url="jdbc:sqlserver://【サーバー名】\【インスタンス名】;databaseName=AdventureWorks2014;"
                    user="sa"
                    password="【パスワード】" />
        <document>
            <entity name="ProductionEntity"
                    query="SELECT * FROM Production.ProductReview">
                <field column="ProductReviewID" name="ProductReviewID"/>
                <field column="Comments" name="Comments"/>
            </entity>
        </document>
    </dataConfig>
    

    ※注意:dataSource は datasource としないように注意しましょう。読み込んでくれませんので。私、これで検証のほとんどの時間を費やしました.....

  • conf\schema.xml に下記の定義を追加します。

    <field name="ProductReviewID" type="int" indexed="true" stored="true" required="true" multiValued="false" />
    <field name="Comments" type="text_general" indexed="true" stored="true"/>
    


 これで設定は完了です。早速、インデックスを作成してみましょう。手順は下記の通りです。

  • Core Selecttor から今回設定したものを選択します。
    f:id:koogucc11:20150628233712p:plain
  • Dataimport をクリックします。
    f:id:koogucc11:20150628233941p:plain
  • Execute をクリックします。成功すると右上の赤枠のように表示されます。
    f:id:koogucc11:20150628234118p:plain

 
 これで、インデックスを作成することができました。うーん、まだまだ調査しなければ、いけないこといっぱいありますね。
 
 お、JSON でいいことできそう。REST な API で色々できそう。REST な感じは面白いですもんね。
f:id:koogucc11:20150628234409p:plain

 あ、レプリケーションも組めそう。業務で利用しようと思ったら、必須ですもんね。
f:id:koogucc11:20150628234417p:plain

 ん、delta-import。差分取り込みですね。業務で利用しようと思ったら、必須ですもんね。
f:id:koogucc11:20150628234738p:plain

 その3は何やろうかな。時間 or 気が向ければ その3で差分取り込みでもやってみます。

※Solr 勉強中....初心者ですが、まだ、本は買いません。ぐぐりじゃなくて、びんぐります!

[改訂新版] Apache Solr入門 ~オープンソース全文検索エンジン (Software Design plus)

[改訂新版] Apache Solr入門 ~オープンソース全文検索エンジン (Software Design plus)

Apache Solr入門 ―オープンソース全文検索エンジン

Apache Solr入門 ―オープンソース全文検索エンジン