LibreOfficeの利用

OpenOffice/LibreOfficeの利用

標準の Fess 環境において、Apache POI を用いた MS Office 系ドキュメントのクロールが可能です。 オフィス系ドキュメントのクロールに関して、OpenOfficeやLibreOfficeを利用して、ドキュメントからより高精度なテキスト抽出も行うことができます。

設定方法

JodConverter を Fess サーバーにインストールします。http://jodconverter.googlecode.com/ からjodconverter-core-3.0-beta-4-dist.zipをダウンロードします。展開して jar ファイルを Fess サーバーにコピーします。

$ unzip jodconverter-core-3.0-beta-4-dist.zip
$ cp jodconverter-core-3.0-beta-4/lib/juh-3.2.1.jar \
jodconverter-core-3.0-beta-4/lib/jurt-3.2.1.jar \
jodconverter-core-3.0-beta-4/lib/ridl-3.2.1.jar \
jodconverter-core-3.0-beta-4/lib/unoil-3.2.1.jar \
jodconverter-core-3.0-beta-4/lib/jodconverter-core-3.0-beta-4.jar \
fess-server-9.3.0/webapps/fess/WEB-INF/cmd/lib/
$ cd fess-server-9.3.0/

次にs2robot_extractor.diconを作成します。

vi webapps/fess/WEB-INF/classes/s2robot_extractor.dicon

s2robot_extractor.diconは以下のような内容でjodExtractorを有効にします。

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE components PUBLIC "-//SEASAR//DTD S2Container 2.4//EN"
    "http://www.seasar.org/dtd/components24.dtd">
<components>
    <component name="tikaExtractor" class="org.codelibs.robot.extractor.impl.TikaExtractor"/>
    <component name="msWordExtractor"
        class="org.codelibs.robot.extractor.impl.MsWordExtractor"/>
    <component name="msExcelExtractor"
        class="org.codelibs.robot.extractor.impl.MsExcelExtractor"/>
    <component name="msPowerPointExtractor"
        class="org.codelibs.robot.extractor.impl.MsPowerPointExtractor"/>
    <component name="msPublisherExtractor"
        class="org.codelibs.robot.extractor.impl.MsPublisherExtractor"/>
    <component name="msVisioExtractor"
        class="org.codelibs.robot.extractor.impl.MsVisioExtractor"/>
    <component name="pdfExtractor" class="org.codelibs.robot.extractor.impl.PdfExtractor"/>
    <component name="textExtractor" class="org.codelibs.robot.extractor.impl.TextExtractor"/>
    <component name="htmlExtractor" class="org.codelibs.robot.extractor.impl.HtmlExtractor"/>
    <component name="xmlExtractor" class="org.codelibs.robot.extractor.impl.XmlExtractor"/>
    <component name="htmlXpathExtractor"
        class="org.codelibs.robot.extractor.impl.HtmlXpathExtractor">
        <initMethod name="addFeature">
            <arg>"http://xml.org/sax/features/namespaces"</arg>
            <arg>"false"</arg>
        </initMethod>
    </component>
    <component name="officeManagerConfiguration"
        class="org.artofsolving.jodconverter.office.DefaultOfficeManagerConfiguration">
    </component>
    <component name="jodExtractor"
        class="org.codelibs.robot.extractor.impl.JodExtractor">
        <property name="officeManager">
            officeManagerConfiguration.setOfficeHome("/usr/lib/libreoffice")
                .buildOfficeManager()
        </property>
    </component>

    <component name="extractorFactory" class="org.codelibs.robot.extractor.ExtractorFactory">
        <initMethod name="addExtractor">
            <arg>{
"application/msword",
"application/vnd.ms-excel",
"application/vnd.ms-powerpoint",
"application/vnd.openxmlformats-officedocument.wordprocessingml.document",
"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",
"application/vnd.openxmlformats-officedocument.presentationml.presentation"
            }</arg>
            <arg>jodExtractor</arg>
        </initMethod>
...

設定後、通常通りにクロールしてインデックスを生成します。