FessのCSV・JSON取り込みで件数不足と文字化けの原因を探す

CSVやJSONの取り込みが完了しても、検索文書が少ない、あるいは本文が文字化けしていることがあります。データストアプラグインに、これまで気付きにくかった入力の問題をログへ出す修正がマージされました。

CSVの置換文字と閉じ忘れた引用符

CSVデータストアのfile_encodingの初期値はUTF-8です。指定した文字コードで解釈できないバイトがあると、デコーダーはU+FFFDという置換文字へ置き換えて取り込みを続けます。修正後は、該当レコード数、最初の行、ファイル、文字コード、設定名をWARNで知らせます。セルの内容はログへ出しません。

たとえば元ファイルがWindows-31Jなら、その文字コードであることを確認した上でデータストアのパラメーターを指定します。

file_encoding=Windows-31J

これは設定例です。実際の文字コードがUTF-8のファイルへ一律に指定しないでください。ファイル内に本物のU+FFFDが含まれている場合も警告対象となるため、警告だけで文字コード違いと断定できません。

引用符を閉じ忘れたCSVでは、後続の複数行が一つのフィールドとして読まれ、文書数が減ることがあります。修正後はファイル終端の引用状態を確認し、WARNに加えて「ファイル:行」の失敗URLを登録します。引用符を扱う初期値はquote_disabled=falseで、trueにした場合はこの検出を行いません。すべてのCSV構文誤りを検出する仕組みではありません。

JSONのroot_pathを実データと照合する

JSONデータストアのroot_pathは初期値では未指定です。ネストした配列を選ぶ場合は、JSON Pointerで指定します。

root_path=/data/items
{"data":{"items":[{"id":"1"},{"id":"2"}]}}

この例でitemzと誤記すると、従来は文書0件で何も知らせず終わっていました。修正後は、空ではないJSONのどこにも指定箇所がないとき、ソースごとにWARNを出します。JSON本文は出力しません。初期値のformat=autoよりroot_pathが優先されます。

正しく空配列に一致した場合と、入力文書そのものが空の場合は警告しません。複数ソースの一部にだけ項目がない運用もあるため、この警告は失敗URLを作りません。

警告は入力データを直す手掛かり

どちらの修正も、取り込まれる文書の結果を自動補正するものではありません。ログと失敗URLで箇所を絞り、文字コード、引用符、JSON構造を直してから再クロールします。既存文書の修復や欠落した行の再登録は別途確認が必要です。

関連PR

コメントを残す

メールアドレスが公開されることはありません。 ※ が付いている欄は必須項目です