前回のFTSでの全文検索から、Solrを9系へアップデートしつつ、ファイル検索も対応してみます。
Solr
まずはSolr9系へのアップデート。アップデートの前に、
- solrを一旦止めて
- /var/solr を退避なり削除するなりして
- /opt/solrをunlinkします。
インストールは7系と同じ手順です。
tar xzf solr-9.1.1.tgz solr-9.1.1/bin/install_solr_service.sh --strip-components=2
./install_solr_service.sh solr-9.1.1.tgz
自動で起動しようとしますが、起動しない場合はsolr.in.sh を/opt/solr/bin/へ。
cp -p /etc/default/solr.in.sh /opt/solr/bin/
chmod +x /opt/solr/bin/solr.in.sh
systemctl start solr
/var/solrが新規に作られたので、再度solrにdovecotを作成します。
sudo -u solr /opt/solr/bin/solr create -c dovecot
同じようにデフォルトを削除してdovecot用のを持ってきます。
rm -f /var/solr/data/dovecot/conf/schema.xml
rm -f /var/solr/data/dovecot/conf/managed-schema
rm -f /var/solr/data/dovecot/conf/solrconfig.xml
cp /usr/share/doc/dovecot/solr-config-7.7.0.xml /var/solr/data/dovecot/conf/solrconfig.xml
cp /usr/share/doc/dovecot/solr-schema-7.7.0.xml /var/solr/data/dovecot/conf/schema.xml
chown solr.solr /var/solr/data/dovecot/conf/*.xml
- /var/solr/data/dovecot/conf/solrconfig.xml
LRUCacheが9系から削除されてCaffeineCacheになっているので、solrconfig.xmlのVersionとともに変更します。
<luceneMatchVersion>9.1.1</luceneMatchVersion>
以下のようにLRUCacheが指定された箇所を探して、
<filterCache class="solr.FastLRUCache"
<queryResultCache class="solr.LRUCache"
<documentCache class="solr.LRUCache"
class="solr.search.LRUCache"
CaffeineCacheに入れ替えます。
<filterCache class="solr.CaffeineCache"
<queryResultCache class="solr.CaffeineCache"
<documentCache class="solr.CaffeineCache"
class="solr.search.CaffeineCache"
Dovecot側の設定は変更する必要が無いので、設定が終わったら再インデックス化してみてエラーが出なければOKです。
doveadm fts rescan -u aikawa@virtual.localdomain
doveadm index -u aikawa@virtual.localdomain INBOX
ファイル内検索 decode2text.sh
ファイル内検索は、pdf, doc, ppt, xls, docx, pptx, xlsx等が対象となりますが、確実にファイル内の文字を検索できるわけではなく、設定が面倒なので必要無いのであれば、入れなくても良いです。
※旧型のxlsファイルは文字化けして一部しか取れなかったり、pptxでも吹き出し内の文字が取れなかったりと、色々と有るようです。
- /usr/local/etc/dovecot/conf.d/90-plugin.conf
decode2text用の設定を加えます。
plugin {
fts_decoder = decode2text
}
service decode2text {
executable = script /usr/libexec/dovecot/decode2text.sh
user = vmb
unix_listener decode2text {
mode = 0666
}
}
decode2textで使用するコマンドはcatdoc, catppt, xls2csv, xmlunzip, pdftotextですが、pdftotext以外はCentOS Stream 9には用意されていません。
GNOMEが
githubで公開しているので、それをコピーします。/usr/local/bin/xmlunzip等に設置してchmod +xで実行権限を与えて下さい。
CentOS 8まではrpmが用意されていてcatdocを入れれば三つとも入るので、catdocのsrc.rpmをダウンロードして、CentOS Stream 9でビルドし直します。
※ChangeLogを見た感じCentOS 7からはFedora用にビルドする以外何もないようなので、今回はCentOS 7のを使いました。
まずはCentOS 7上でsrc.rpmをダウンロード。
yumdownloader --source catdoc --enablerepo=epel-source
CentOS Stream 9へ持って来て、ビルドします。
dnf install rpm-build yum-utils
yum-builddep catdoc-0.95-1.el7.src.rpm
rpmbuild --rebuild catdoc-0.95-1.el7.src.rpm
dnf localinstall ~/rpmbuild/RPMS/x86_64/catdoc-0.95-1.el9.x86_64.rpm
catdoc等のコマンドがインストールされた事を確認して、dovecotで再インデックス化。添付ファイルが無い場合は、添付ファイルの有るメールを作成しておきます。
doveadm fts rescan -u aikawa@virtual.localdomain
doveadm index -u aikawa@virtual.localdomain INBOX
RoundCubeでメッセージ全体をオプションで指定して検索してみます。
上で書いたように確実に文字が検索されるわけではないので、出なければ別の文字を入れたりしてみて下さい。
この投稿は 2023年2月9日 木曜日 17:21 に 未分類 カテゴリーに公開されました。 この投稿へのコメントは RSS 2.0 フィードで購読することができます。
このページの一番下でコメントを残すことができます。トラックバック / ピンバックは現在受け付けていません。