戯言

つらつらと気づいたことを書いていきます。人狼とか。

スポンサーサイト


上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

solrの管理画面から複数のデータの登録や更新を行う



solrでは、updateコマンドを発行しなくとも、管理画面から登録や更新することもできます。

コアを選択後、Documentsのリンクを開きます。



1つのデータを登録するだけであれば、
Document Typeで「JSON」を選択し、
Document(s)に、

{"id":"change.me","title":"change.me"}

などと入力すれば、登録できます。

実は、「Document(s)」と複数データも行けるように見えますが、
Document Type 「JSON」では単一ドキュメントしか登録できません。
複数のデータをまとめて登録しようとして、

[
{"id":"change1.me","title":"change1.me"},
{"id":"change2.me","title":"change2.me"}
]

などと入力しても、エラーが発生します。

他にもいろいろ試してみましたが、できませんでした。


では、複数のデータを登録するにはどうするのでしょうか。
Document Type 「Solr Command (raws XML or JSON)」から、登録できることを確認しました。
Document(s)欄には、デフォルトでXMLの例文が表示されますが、(JSONで記述したいので)さくっと全て削除してしまって、

{
"add":{"doc":{"id":"change1.me","title":"change1.me"}},
"add":{"doc":{"id":"change2.me","title":"change2.me"}},
"commit":{}
}

とすると、登録(コミットも)できます。

どうやら、Document Type「JSON」の方は、入力したデータをもとに

{"add":{ "doc": (Document(s)欄に入力した値),
"commitWithin": (Commit Within欄に入力した値),
"overwrite": (overwrite欄に入力した値),
"boost": (Boost欄に入力した値)
}
}

のように補完しているんだと思います。

なので、複数のデータはDocument Type 「JSON」で登録できないのでしょう。たぶん。(ソースは見てない)


スポンサーサイト

Solrの起動時に、org.apache.solr.common.SolrException: undefined field text が発生


Solrの起動時に、org.apache.solr.common.SolrException: undefined field text と言われる

標準の solrconfig.xml をコピーし、必要箇所だけ修正して使っている場合、
<str name="df">text</str> という設定が何か所かあります。

メッセージの出力原因は、text という存在しないフィールドを設定しているためなので、
実在するフィールド名に変えてしまえば、エラーは出なくなります。


SolrのデフォルトはOR検索


Solrを るる鯖 で使えるか検討してます。

「第一 犠牲者」で検索すると、「第一」と「犠牲者」のOR検索になってしまい、
「第一球」などもヒットしてしまう状態に。

デフォルトAND検索で良いと思うんですが、なぜデフォルトORになっているかは分かりません。

solrconfig.xml にて、自動的にAND検索になるように設定することができます。

<requestHandler name="/select" class="solr.SearchHandler"> 内の
<lst name="defaults"> 内に、

  <str name="q.op">AND</str>

を追加すればよいです。

もちろん検索パラメータに、q.opを明示的に与えてあげてもOKです。



上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。