intra-mart Accel Platform 設定ファイルリファレンス 第34版 2024-04-01

テキスト抽出設定

概要

IM-ContentsSearch において、ファイルからテキストデータを抽出する機能の設定値です。
モジュール IM-ContentsSearch コアライブラリ
フォーマットファイル(xsd) WEB-INF/schema/solr-extractor-config.xsd
設定場所 WEB-INF/conf/solr-extractor-config.xml

<?xml version="1.0" encoding="UTF-8"?>
<solr-extractor-config
   xmlns="http://intra-mart.co.jp/system/solr/config/solr-extractor-config"
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   xsi:schemaLocation="http://intra-mart.co.jp/system/solr/config/solr-extractor-config ../schema/solr-extractor-config.xsd ">

  <extractor name="im_default">
    <default>
      <min-size>0</min-size>
      <max-size>100M</max-size>
      <properties>
        <!-- temporary directory sample for Linux -->
        <property name="tmpDir" type="string">/tmp</property>
        <!-- temporary directory sample for Windows -->
        <!--
        <property name="tmpDir" type="string">C:\temp</property>
        -->
      </properties>
    </default>
    <mapping>
      <!-- Entry for text files -->
      <entry type="text/plain" extension="txt" max-size="1M" class="jp.co.nttdata.intra_mart.contentssearch.text.extraction.extractor.PlainTextExtractor" />

      <!-- Entry for HTML files -->
      <entry type="text/html" extension="htm,html" max-size="1M" class="jp.co.nttdata.intra_mart.contentssearch.text.extraction.extractor.HtmlExtractor" />

      <!-- Entry for XML files -->
      <entry type="text/xml" extension="xml" max-size="1M" class="jp.co.nttdata.intra_mart.contentssearch.text.extraction.extractor.XmlExtractor" />

      <!-- Entry for Word files -->
      <entry type="application/msword" extension="doc" class="jp.co.nttdata.intra_mart.contentssearch.text.extraction.extractor.WordExtractor" />
      <entry type="application/vnd.openxmlformats-officedocument.wordprocessingml.document" extension="docx" class="jp.co.nttdata.intra_mart.contentssearch.text.extraction.extractor.WordxExtractor" />

      <!-- Entry for Excel files -->
      <entry type="application/vnd.ms-excel" extension="xls" max-size="10M" class="jp.co.nttdata.intra_mart.contentssearch.text.extraction.extractor.ExcelExtractor" />
      <entry type="application/vnd.openxmlformats-officedocument.spreadsheetml.sheet" extension="xlsx" max-size="10M" class="jp.co.nttdata.intra_mart.contentssearch.text.extraction.extractor.ExcelxExtractor" />

      <!-- Entry for PowerPoint files -->
      <entry type="application/vnd.ms-powerpoint" extension="ppt" class="jp.co.nttdata.intra_mart.contentssearch.text.extraction.extractor.PowerPointExtractor" />
      <entry type="application/vnd.openxmlformats-officedocument.presentationml.presentation" extension="pptx" class="jp.co.nttdata.intra_mart.contentssearch.text.extraction.extractor.PowerPointxExtractor" />

      <!-- Entry for Visio files -->
      <entry type="application/vnd.visio" extension="vsd" class="jp.co.nttdata.intra_mart.contentssearch.text.extraction.extractor.VisioExtractor" />

      <!-- Entry for zip files -->
      <entry type="application/zip" extension="zip" class="jp.co.nttdata.intra_mart.contentssearch.text.extraction.extractor.ZipExtractor" />

      <!-- Entry for PDF files -->
      <entry type="application/pdf" extension="pdf" precedence="1" class="jp.co.nttdata.intra_mart.contentssearch.text.extraction.extractor.PdfExtractor" />


      <!-- 以下の要素は無効化されています -->

      <!-- xpdfを利用してPDFを処理する設定 -->
      <entry enabled="false" type="application/pdf" extension="pdf" precedence="3" class="jp.co.nttdata.intra_mart.contentssearch.text.extraction.extractor.XpdfExtractor">
        <property name="exeFile" type="string">C:\pdftotext_home\pdftotext.exe</property>
      </entry>

      <!-- xdoc2txtを利用してPDFを処理する設定 -->
      <entry enabled="false" type="application/pdf" extension="pdf" precedence="2" class="jp.co.nttdata.intra_mart.contentssearch.text.extraction.extractor.Xdoc2txtExtractor">
        <property name="tmpExtension" type="string">pdf</property>
        <property name="exeFile" type="string">C:\xdoc2txt_home\xdoc2txt.exe</property>
      </entry>

    </mapping>
  </extractor>

</solr-extractor-config>

コラム

DocuWorks文書を処理する設定

DocuWorks文書を処理するLinuxまたはWindows向けの設定については、「Accel Documents / IM-ContentsSearch for Accel Documents 仕様書」を参照してください。

コラム

単位サフィックス

整数を記述する場合は、単位を示す 単位サフィックス を末尾に付け加えた形式が利用できます。
例えば「百万」という整数を記述するには通常 1000000 と記述しますが、これを 1M と書くことができます。
利用可能な単位サフィックスは、 k , M , G , T のいずれかです。
以下に、例を示します。
  • 10k = 10,000
  • 100M = 100,000,000
  • 90G = 90,000,000,000
  • 711T = 711,000,000,000,000

リファレンス

テキスト抽出設定グループ

タグ名 extractor
一つのテキスト抽出設定グループを表します。
詳細な設定は配下のタグで行います。

【設定項目】

<solr-extractor-config>
  <extractor name="im_default">
    ...
  </extractor>
  ...
</solr-extractor-config>

必須項目
複数設定
親タグ solr-extractor-config

【属性】

属性名 説明 必須 デフォルト値
name
テキスト抽出設定グループの名称を指定します。
solr-config.xml にて参照するために利用されます。
なし

パラメータ既定値

タグ名 default
テキスト抽出パラメータを既定値を設定します。
<mapping> タグ内にて設定されたすべての <entry> に対する共通の既定値です。

【設定項目】

<solr-extractor-config>
  <extractor name="im_default">
    <default>
      ...
    </default>
    ...
  </extractor>
  ...
</solr-extractor-config>

必須項目 ×
複数設定 ×
親タグ extractor

テキスト抽出対象ファイルサイズ最小値の既定値

タグ名 min-size
テキスト抽出対象ファイルサイズ最小値の既定値を設定します。
設定値には 単位サフィックス が利用可能です。

【設定項目】

<solr-extractor-config>
  <extractor name="im_default">
    <default>
      <min-size>0</min-size>
      ...
    </default>
    ...
  </extractor>
  ...
</solr-extractor-config>

必須項目 ×
複数設定 ×
省略時のデフォルト値 0 (制限なし)
親タグ default

テキスト抽出対象ファイルサイズ最大値の既定値

タグ名 max-size
テキスト抽出対象ファイルサイズ最大値の既定値を設定します。
設定値には 単位サフィックス が利用可能です。

【設定項目】

<solr-extractor-config>
  <extractor name="im_default">
    <default>
      ...
      <max-size>100M</max-size>
      ...
    </default>
    ...
  </extractor>
  ...
</solr-extractor-config>

必須項目 ×
複数設定 ×
省略時のデフォルト値 0 (制限なし)
親タグ default

プロパティ既定値一覧の設定

タグ名 properties
プロパティの既定値の一覧を設定します。
プロパティの設定は配下の property タグで行います。

【設定項目】

<solr-extractor-config>
  <extractor name="im_default">
    <default>
      ...
      <properties>
        ...
      </properties>
    </default>
    ...
  </extractor>
  ...
</solr-extractor-config>

必須項目 ×
複数設定 ×
親タグ default

プロパティ既定値の設定

タグ名 property
プロパティの既定値を設定します。

【設定項目】

<solr-extractor-config>
  <extractor name="im_default">
    <default>
      ...
      <properties>
        <property name="tmpDir" type="string">tmp</property>
      </properties>
    </default>
    ...
  </extractor>
  ...
</solr-extractor-config>

必須項目 ×
複数設定
親タグ properties

【属性】

属性名 説明 必須 デフォルト値
name
nameの値 説明
tmpDir 添付ファイルからテキスト抽出する際に一時的に利用する、ディレクトリのパスを指定します。
なし
type
JavaBean プロパティ値の型を指定します。
指定可能な値は、 string , int , long , null のいずれかです。
なし

テキスト抽出器クラスの対応関係一覧の設定

タグ名 mapping
拡張子 および MIMEタイプ に対応するテキスト抽出器クラスの対応関係を設定します。
対応関係の設定は配下の entry タグで行います。

【設定項目】

<solr-extractor-config>
  <extractor name="im_default">
    ...
    <mapping>
      ...
    </mapping>
  </extractor>
  ...
</solr-extractor-config>

必須項目
複数設定 ×
親タグ extractor

テキスト抽出器クラスの対応関係の設定

タグ名 entry
拡張子 および MIMEタイプ に対応するテキスト抽出器クラスの対応関係を設定します。

【設定項目】

<solr-extractor-config>
  <extractor name="im_default">
    <mapping>
      ...
      <entry enabled="false" type="application/pdf" extension="pdf" precedence="3" class="jp.co.nttdata.intra_mart.contentssearch.text.extraction.extractor.XpdfExtractor">
        ...
      </entry>
      ...
    </mapping>
  </extractor>
  ...
</solr-extractor-config>

必須項目
複数設定
親タグ mapping

【属性】

属性名 説明 必須 デフォルト値
enabled
この entry が有効とみなすかどうかを、 true または false で指定します。
false を指定した場合は、この entry はテキスト抽出に用いられません。
× true
min-size
テキスト抽出対象とするファイルの境界値を含んだ最小サイズ設定します。
ファイルサイズがこの範囲内におさまらない場合は、そのファイルの中身からテキストが抽出されません。
設定値には 単位サフィックス が利用可能です。
× なし
max-size
テキスト抽出対象とするファイルの境界値を含んだ最大サイズ設定します。
ファイルサイズがこの範囲内におさまらない場合は、そのファイルの中身からテキストが抽出されません。
0以下の値を指定した場合、無制限であることを意味します。
設定値には 単位サフィックス が利用可能です。
× なし
type MIME タイプを指定します。 なし
extension
拡張子を指定します。
半角カンマで区切って、複数の拡張子を記述できます。
例) extension=”htm,html” と記述すると、「htm」「html」という二つの拡張子に対応する entry であることを表します。
なし
class
指定した MIMEタイプ および 拡張子 を持つファイルからテキストを抽出するための、テキスト抽出器クラスの完全修飾Javaクラス名を指定します。
なし
precedence
同じMIMEタイプまたは拡張子に対して複数のテキスト抽出器クラスを設定した場合に、どのテキスト抽出器クラスを優先するかを整数値で指定します。
大きな値を指定するほど、優先度が高くなります。
× 0

テキスト抽出器クラスのJavaBeanプロパティの設定

タグ名 property
entry タグにて指定されたテキスト抽出器クラスをインスタンス化する際に、JavaBeanプロパティとしてセットされる値を設定します。

【設定項目】

<solr-extractor-config>
  <extractor name="im_default">
    <mapping>
      ...
      <entry enabled="false" type="application/pdf" extension="pdf" precedence="3" class="jp.co.nttdata.intra_mart.contentssearch.text.extraction.extractor.XpdfExtractor">
        <property name="exeFile" type="string">C:\pdftotext_home\pdftotext.exe</property>
      </entry>
      ...
    </mapping>
  </extractor>
  ...
</solr-extractor-config>

必須項目 ×
複数設定
親タグ entry

【属性】

属性名 説明 必須 デフォルト値
name
JavaBean のプロパティ名を指定します。
なし
type
JavaBean プロパティ値の型を指定します。
指定可能な値は、 string , int , long , double , null のいずれかです。
なし

付録

コラム

ログレベルを debug にすることで、クローリング失敗時に標準のテキスト抽出器クラスの Exception ログを出力できます。
<logger name="jp.co.intra_mart.system.contentssearch.internal.solrj.parser.impl.UniversalExtractorTextParser">
  <level value="debug" />
</logger>

システムプロパティで Apache POI の上限値を調整する

標準のテキスト抽出処理で使用している Apache POI は、レコード長等の上限サイズをデフォルト持っており、それを超過するとエラーが出力されます。
以下条件に当てはまる場合、システムプロパティで上限値を調整する必要があります。
  • テキスト抽出対象に Microsoft Office ファイルが含まれている。
  • Microsoft Office ファイルのテキスト抽出に標準のテキスト抽出クラスを使用している。

値の算出とシステムプロパティの設定

max-size と後述の拡張子毎の倍率を使って値を算出し、JVM 引数にシステムプロパティを設定します。
算出値はすべてのファイルがエラーなくテキスト抽出できる値ではありません。
エラーログの内容からシステムプロパティの値を設定をする場合は以下を参照してください。
  • 拡張子毎の倍率

    以下の倍率は目安であり、すべてのファイルがエラーなくテキスト抽出できる値ではありません。

    extension レコード長倍率 テキスト倍率
    doc、docx 2 0.1
    xls、xlsx 10 1
    ppt、pptx 2 0.1
    ppt、pptx 2 0.1

レコード長の最大サイズ( jp.co.intra_mart.system.repackage.poi_5_2_3.org.apache.poi.byteArrayMax

entrymax-size × レコード長倍率 の中で一番大きな値を jp.co.intra_mart.system.repackage.poi_5_2_3.org.apache.poi.byteArrayMax に指定してください。
例えば max-size 100M の docx の entry と、 max-size 100M の xlsx の entry が設定されている場合、xlsx の 100M × 10 = 1000M を指定します。
JVM 引数にシステムプロパティを設定する例は以下の通りです。
※ Apache POI のデフォルト値は 100000000 バイトです(100M)。この値より小さい場合はシステムプロパティの設定を省略できます。
-Djp.co.intra_mart.system.repackage.poi_5_2_3.org.apache.poi.byteArrayMax=1000000000

最大テキストサイズ( jp.co.intra_mart.system.repackage.poi_5_2_3.org.apache.poi.textScale

entrymax-size × テキスト倍率 の中で一番大きな値を jp.co.intra_mart.system.repackage.poi_5_2_3.org.apache.poi.maxTextSize に指定してください。
例えば max-size 10M の xlsx の entry と、 max-size 500M の pptx の entry が設定されている場合、pptx の 500M × 0.1 = 50M を指定します。
JVM 引数にシステムプロパティを設定する例は以下の通りです。
※ Apache POI のデフォルト値は 10485760 バイトです(約10M)。この値より小さい場合はシステムプロパティの設定を省略できます。
-Djp.co.intra_mart.system.repackage.poi_5_2_3.org.apache.poi.maxTextSize=50000000