Solrにapi経由でjsonのデータを入れる

前回の記事である「Solrに新規でCoreを追加してみた。が、basic_configs がない…@Solr7.1.0」(https://webtopi.biz/archives/387)からの続きです。

coreができたので、何でもいいのでデータを入れたいと考えた私。ちなみに、今回勉強の教材に使っている本はこちらです。

で、この本ではサンプルデータに関しての記載があったので、そちらでJsonをダウンロードして入れてみようと思います。

Solrのnew_coreに、curlを使ってjsonファイルを入れてみる

ひとまずよくわからないので、適当にデータの入ったjsonファイルを入れてみることにします

ファイル名は、xxx.jsonです。

curl "http://【サーバーのIPアドレス】:8983/solr/new_core/update?commit=true" --data-binary @xxx.json -H 'Content-type:text/json;charset=utf-8'

さて、入力されたか見てみます。管理画面でnew_coreを選択して、Queryを押してから、qの欄に「*:*」を入れて「Execute Query」をクリックします。

お!ちゃんと入ってる!よかった!ほんじゃ、次は「計測機器」で検索してみよう。

出ないじゃん。なんでよ。ちなみに、「summary:計測機器」でやるとちゃんと出るんですけど、関係ないものまで紛れ込む始末…。なんでだろう…。

ん?そういえば、new_coreを作った時のschemaって、今回入れたデータのsummaryとかって定義がなかったですね…トークナイザなどの定義もしっかり入れておかないと、検索の際のトークナイズと一致してないのかもしれません…。というか、定義がない要素があっても入れることができるんですね…。

Analyzeで見ても、何か今回入れたjsonの要素とかも勝手にフィールドとして登録されているし、しかもトークナイザーの設定とかも自動で設定されてるし…。

しっかりとした検索結果を出すには、要素それぞれのschemaを決めていれる必要がありますね…。

managed-schemaに登録していないフィールドのデータを入れると勝手にmanaged-schema に登録される

/var/solr/data/new_core/conf の中にある「managed-schema 」をチェックしてみます。

やっぱり入ってます。自動的にtypeが「text_general」に設定されていますね…。私は望んでいませんが…。

ここでいうtext_generalは、field_typeで、自動的につけられたのはtext_generalだったということなんですね。defaultで他に何が入ってるのかな…と見てみると、「text_ja」というものがありました。日本語なので本来は「text_ja」がtypeになるべきだったのでしょう。そうしたらもっといい結果になった…はず。

ひとまず、managed-schema の変更を行おうと思います。APIでやったほうがよいと書いてあるので、今後はAPIですべて実施することにします。

aa.jsonに以下内容で作成してみました。

"replace-field":{
"name":"summary",
"type":"text_ja",
}

そして、このファイルをschema APIへ向けて送信します。

curl --data-binary @aa.json -H 'Content-type:text/json;charset=utf-8' "http://192.168.11.30:8983/solr/new_core/schema" 

さて、結果は…

ファファーン!text_jaに変更されました!

データを入れる前には必ずSchemaで定義しないと色々問題があるので、しっかり順序は守ろうかと思う

コメント