Solr がインデックス時に空のフィールドでエラーを出す

(The bot translated the original post https://lists.apache.org/thread/bvrtyfl4whsbj669x5lzbh3ww5mrwjnp into Japanese and reposted it under Apache License 2.0. The copyright of posted content is held by the original poster.)
皆さん、こんにちは。
私たちは Solarium-PHP ベースで独自に構築したクローラーを使用しており、Solr にデータを投入しています。
Solr を 9.6.1 から 9.8.0 にアップグレードして以来、クローラーのログにエラーが出るようになりました。
ログには、Solr が「title フィールドが存在しない」と訴えているとあります。
実際には、title フィールドはリクエストの一部に含まれていますが、中身が空なのです。
以下はリクエストボディの一部抜粋です(これを出力するために、Solarium-PHP の適切な場所に var_dump()
を挿入しました):
Content-Disposition: form-data; name="literal.publishDate"
Content-Type: text/plain;charset=UTF-8
2023-01-12T10:25:06Z
--00000000000002800000000000000000
Content-Disposition: form-data; name="literal.title"
Content-Type: text/plain;charset=UTF-8
(← 空です)
--00000000000002800000000000000000
Content-Disposition: form-data; name="literal.number"
そして以下がそのレスポンスです:Error indexing document 14935: wp-content/uploads/loremipsum.pdf: Solr HTTP error: OK (400)
{
"responseHeader": {
"status": 400,
"QTime": 121
},
"error": {
"metadata": [
"error-class", "org.apache.solr.common.SolrException",
"root-error-class", "org.apache.solr.common.SolrException"
],
"msg": "[doc=141396] missing required field: title",
"code": 400
}
}
PDF ファイルにタイトルが含まれていないのは、技術的でない理由により私の側では修正できません。
それにもかかわらず、アップグレード前は正常に動作していました。
スキーマは以下のような JSON データで作成しています。特に title
フィールドは以下の通りです:
{
"name": "title",
"type": "text_general",
"stored": true,
"indexed": true,
"multiValued": false,
"required": true
}
このため、ドキュメントはインデックス化されません。
どうすればこの問題を解決できますか?
- スキーマの JSON データに何か変更を加える必要がありますか?
- それとも、**空のタイトルを定数の非空文字列に置き換える(クローラー側で対応)**のがよいでしょうか?
required
オプションに関するドキュメントには、以下のように書かれていました:
このフィールドに値がないドキュメントを追加しようとした場合、Solr はそれを拒否します。このプロパティのデフォルト値は false です。
この説明が少し曖昧に感じられます。
「値がない」とは何を意味しているのでしょうか?
値として空文字列(""
)がある場合も、「値がない」と見なされるのでしょうか?
どうぞよろしくお願いいたします。
Robert Ehrenleitner(工学学士・哲学修士)
トピックへ返信するには、ログインが必要です。