何をしたいか
対象ファイルパスをリスト化したcsvファイルを用意し、Fessにそのファイルを読み込ませてクロールさせたい。
Fess公式に詳しい解説があるが、若干のわかりづらさを感じたため、実際に確認した内容のまとめ記事にする。
バージョン等
Fess 13.13.0
Elasticsearch 7.13.0
CentOS 8.4
オープンソース全文検索サーバー Fess
https://fess.codelibs.org/ja/index.html
Elasticsearch
https://www.elastic.co/jp/elasticsearch/
公式の解説
公式の解説 データストアクロール
https://fess.codelibs.org/ja/13.13/admin/dataconfig-guide.html
csv作成
フォーマット
modify,smb://servername/data/testfile1.txt
modify,smb://servername/data/testfile2.txt
modify,smb://servername/data/testfile3.txt
カラム1はそのファイルがどう操作されたのかのアクション。テストならmodifyにすると新規でも更新でも動く。
create:ファイルが作成された
modify:ファイルが更新された
delete:ファイルが削除された
カラム2はファイルパス。区切り文字はデフォルト/
。Windowsサーバーでも/
で書くこと。
fileプロトコルでも書けるらしいのだが、うまくいかない。ファイルクロールの場合はfileでもsmbでもうまくいったのだが…。あえてfileで書く意味は特にないので、smbを使うことにする。
ダブルクォーテーション囲みは無しにする。パラメータ指定で囲みあり+囲み文字を無視する設定がうまくいかなかっため。この件は別途確認したい。
文字エンコード
今回はLinux版なのでUTF-8で保存。
クロール設定
名前はただの名前なので適当に。
ハンドラー名はCsvListDataStore
を選択。
パラメーター
files=/home/crawletest.csv
fileEncoding=UTF-8
crawler.file.auth=servername
crawler.file.auth.servername.scheme=SAMBA
crawler.file.auth.servername.username=username
crawler.file.auth.servername.password=password
files / directories
1ファイルの場合はfiles指定。
directoriesで指定するとディレクトリ内の.csvと.tsvを全部読む。directories=/home/taro/csv
など。
fileEncoding
UTF-8
と書かないと読めない。Utf-8やutf-8やutf8ではだめ。
シフトJISはShift_JIS
。
crawler.file.auth
クロール先ファイルサーバの認証情報。公式解説だとどこに記述するかわかりづらいがこれはパラメータに設定する。
passwordは暗号化されて保存される。
その他の設定
今回の確認では使わなかったパラメータ設定
https://news.mynavi.jp/itsearch/article/devsoft/4761
quoteDisabled=false
csv内で囲み文字が使われている場合に設定…らしい。
囲み文字"
入りのcsvで正常に動作させることができなかったため、別途調査と確認する。
skipLines=1
csv先頭から指定行数を読み飛ばす。1行目がカラム名になっていて読み飛ばしたい場合など。
スクリプト
event_type=cell1
url=cell2
これは公式コピペでいい。csvの中身が何なのかを指定している。