概要
CSVコネクタは、CSVファイルからデータを取得して Fess のインデックスに登録する機能を提供します。
この機能には fess-ds-csv プラグインが必要です。
前提条件
プラグインのインストールが必要です
CSVファイルへのアクセス権が必要です
CSVファイルの文字エンコーディングを把握している必要があります
プラグインのインストール
方法1: JARファイルを直接配置
方法2: 管理画面からインストール
「システム」→「プラグイン」を開く
JARファイルをアップロード
Fess を再起動
設定方法
管理画面から「クローラー」→「データストア」→「新規作成」で設定します。
基本設定
| 項目 | 設定例 |
|---|---|
| 名前 | Products CSV |
| ハンドラ名 | CsvDataStore |
| 有効 | オン |
パラメーター設定
ローカルファイル:
複数ファイル:
注釈
引用符(クォート)処理とエスケープ処理は、デフォルトでは 無効 になっています。 引用符で囲まれたフィールド内に区切り文字や改行を含むCSV(RFC 4180準拠)を扱う場合は、 quote_disabled=false を明示的に指定して引用符処理を有効にしてください。 詳細は後述の「引用符・エスケープ処理の有効化」を参照してください。
パラメーター一覧
| パラメーター | 必須 | 説明 |
|---|---|---|
files | いいえ | CSVファイルのパス(ローカルパス、複数指定可:カンマ区切り)。 files または directories のいずれかの指定が必要です。両方指定した場合は files が優先されます。指定するファイルは拡張子が .csv または .tsv である必要があり、それ以外の拡張子のファイルはスキップされます。 |
directories | いいえ | CSVファイルを含むディレクトリのパス(複数指定可:カンマ区切り)。ディレクトリ内の .csv および .tsv ファイルのみが対象となります。 files が指定されていない場合に使用されます。 |
file_encoding | いいえ | 文字エンコーディング(デフォルト: UTF-8) |
has_header_line | いいえ | ヘッダー行の有無(デフォルト: false) |
separator_character | いいえ | 区切り文字(デフォルト: カンマ ,)。 \t のようなエスケープシーケンスを指定できます(タブ区切り)。 |
quote_character | いいえ | 引用符(デフォルト: ダブルクォート ")。ただし引用符処理はデフォルトで無効です( quote_disabled を参照)。 |
escape_character | いいえ | エスケープ文字(デフォルト: バックスラッシュ \)。ただしエスケープ処理はデフォルトで無効です( escape_disabled を参照)。 |
注釈
files および directories の両方が空の場合はエラー( DataStoreException )となります。 どちらか一方を必ず指定してください。
高度なパラメーター
以下のパラメーターはCSVの解析動作を細かく制御します:
| パラメーター | 説明 |
|---|---|
quote_disabled | 引用符(クォート)処理を無効にするか(デフォルト: true)。RFC 4180準拠の引用符付きフィールドを扱う場合は false を指定します。 |
escape_disabled | エスケープ処理を無効にするか(デフォルト: true)。 escape_character によるエスケープを有効にする場合は false を指定します。 |
skip_lines | スキップする先頭行数(デフォルト: 0) |
ignore_line_patterns | 無視する行の正規表現パターン(例: ^#.* でコメント行を無視) |
ignore_empty_lines | 空行を無視するか(デフォルト: false) |
ignore_trailing_whitespaces | 末尾の空白を無視するか(デフォルト: false) |
ignore_leading_whitespaces | 先頭の空白を無視するか(デフォルト: false) |
null_string | null値として扱う文字列 |
break_string | フィールド値中の改行を置換する文字列 |
readInterval | 1レコードを処理するごとの待機時間(ミリ秒)(デフォルト: 0) |
スクリプト設定
各フィールドの値は、CSVの各列の値を参照して組み立てます。CSVの列はスクリプト内で 接頭辞なしの変数 として直接参照できます( data. のような接頭辞は付きません)。
ヘッダーありの場合(列名で参照):
ヘッダーなしの場合(列インデックスで参照):
利用可能なフィールド
<列名>- ヘッダー行の列名で直接参照します(has_header_line=trueの場合のみ。列名が空白でない場合に有効)cell<N>- 列インデックスで参照します(cell1、cell2...のように1始まり。ヘッダーの有無に関わらず利用可能)csvfile- 処理中のCSVファイルのフルパスcsvfilename- 処理中のCSVファイル名
注釈
列名にスペースやハイフンなど、Groovyの識別子として無効な文字が含まれる場合は、 列名での参照ができません。その場合は cell<N> を使用してください。
CSV形式の詳細
標準CSV(RFC 4180準拠)
注釈
上記の "Book, Programming" のように、引用符で囲んでフィールド内に区切り文字を 含めるには quote_disabled=false を指定して引用符処理を有効にする必要があります。 引用符処理が無効(デフォルト)の場合、引用符は通常の文字として扱われ、 フィールドは区切り文字で分割されます。
引用符・エスケープ処理の有効化
引用符処理とエスケープ処理はデフォルトで無効です。以下のように明示的に有効化します。
引用符処理を有効にする:
エスケープ処理を有効にする:
セパレーターの変更
タブ区切り(TSV):
セミコロン区切り:
カスタム引用符
シングルクォート(引用符処理の有効化が必要):
エンコーディング
日本語ファイル(Shift_JIS):
日本語ファイル(EUC-JP):
使用例
製品カタログのCSV
CSVファイル(products.csv):
パラメーター:
スクリプト:
在庫情報のフィルタリング:
社員名簿のCSV
CSVファイル(employees.csv):
パラメーター:
スクリプト:
ヘッダーなしのCSV
CSVファイル(data.csv):
パラメーター:
スクリプト:
複数CSVファイルの統合
パラメーター:
スクリプト:
タブ区切り(TSV)ファイル
TSVファイル(data.tsv):
パラメーター:
スクリプト:
トラブルシューティング
ファイルが見つからない
症状: クロールが実行されるがファイルが処理されない、ログに is not found が出力される
確認事項:
ファイルパスが正しいか確認(絶対パス推奨)
ファイルが存在するか確認
ファイルの拡張子が
.csvまたは.tsvであるか確認(それ以外の拡張子はスキップされます)ファイルの読み取り権限があるか確認
Fess 実行ユーザーからアクセス可能か確認
文字化けが発生する
症状: 日本語が正しく表示されない
解決方法:
正しい文字エンコーディングを指定:
ファイルのエンコーディングを確認:
列が正しく認識されない
症状: 列の区切りが正しく認識されない、または引用符で囲んだフィールドが分割される
確認事項:
区切り文字が正しいか確認:
引用符付きフィールド(フィールド内に区切り文字を含む)を扱う場合は、引用符処理を有効にする:
CSVファイルの形式を確認(RFC 4180準拠か)
ヘッダー行の扱い
症状: 1行目がデータとして認識される
解決方法:
ヘッダー行がある場合:
ヘッダー行がない場合:
データが取得できない
症状: クロールは成功するが件数が0
確認事項:
CSVファイルが空でないか確認
スクリプト設定が正しいか確認(列名・
cell<N>の参照がdata.接頭辞なしになっているか)列名が正しいか確認(has_header_line=true の場合)
ログでエラーメッセージを確認
大きなCSVファイル
症状: メモリ不足またはタイムアウト
解決方法:
CSVファイルを複数に分割
必要な列のみをスクリプトで使用
Fess のヒープサイズを増やす
不要な行をフィルタリング
改行を含むフィールド
RFC 4180形式では、引用符で囲むことで改行を含むフィールドを扱えます。 引用符処理はデフォルトで無効のため、 quote_disabled=false の指定が必要です:
パラメーター:
CsvListDataStore
fess-ds-csv プラグインには、 CsvDataStore に加えて CsvListDataStore ハンドラも含まれています。
CsvListDataStore は CsvDataStore を拡張し、以下の追加機能を提供します:
マルチスレッド処理(
numOfThreadsパラメーターで制御)処理済みCSVファイルの自動削除
タイムスタンプベースのファイルフィルタリング(書き込み中のファイルをスキップ)
CsvDataStore のすべてのパラメーターおよびスクリプト設定がそのまま利用できます。
基本設定
| 項目 | 設定例 |
|---|---|
| ハンドラ名 | CsvListDataStore |
追加パラメーター
| パラメーター | 必須 | 説明 |
|---|---|---|
timestamp_margin | いいえ | ファイルの最終更新時刻からの経過時間(ミリ秒)。この時間が経過していないファイルは、書き込み中とみなしてスキップされます(デフォルト: 10000) |
numOfThreads | いいえ | 処理スレッド数(デフォルト: 1) |
注釈
CsvListDataStore は処理完了後にCSVファイルを自動的に削除します。処理中にエラーが発生した場合、ファイルは .txt にリネームされます(リネームに失敗した場合は削除されます)。
スクリプトの高度な使用例
データの加工
条件付きインデックス
複数列の結合
日付のフォーマット
参考情報
データストアコネクタの概要 - データストアコネクタ概要
JSONコネクタ - JSONコネクタ
データベースコネクタ - データベースコネクタ
データストアクロール - データストア設定ガイド