intra-mart Accel Platform 設定ファイルリファレンス 第32版 2023-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>

ファイル展開時の上限サイズを調整する

JavaBean プロパティに展開サイズ倍率を設定することで、ファイル展開時の上限サイズを調整できます。
プロパティ名 name type 説明
展開サイズ倍率 expansionScale double max-size × expansionScale をファイル展開時の最大サイズとして設定します。

コラム

展開サイズ倍率は 2022 Winter(Freesia) 以降から設定できます。
  • JavaBean プロパティが設定可能なテキスト抽出器クラス

    テキスト抽出器クラス デフォルト値
    jp.co.nttdata.intra_mart.contentssearch.text.extraction.extractor.WordExtractor 2
    jp.co.nttdata.intra_mart.contentssearch.text.extraction.extractor.WordxExtractor 2
    jp.co.nttdata.intra_mart.contentssearch.text.extraction.extractor.ExcelExtractor 10
    jp.co.nttdata.intra_mart.contentssearch.text.extraction.extractor.ExcelxExtractor 10
    jp.co.nttdata.intra_mart.contentssearch.text.extraction.extractor.PowerPointExtractor 2
    jp.co.nttdata.intra_mart.contentssearch.text.extraction.extractor.PowerPointxExtractor 2
    jp.co.nttdata.intra_mart.contentssearch.text.extraction.extractor.VisioExtractor 2
  • 設定例

<solr-extractor-config>
  <extractor name="im_default">
    <mapping>
      ...
      <entry type="application/vnd.openxmlformats-officedocument.spreadsheetml.sheet" extension="xlsx" max-size="10M" class="jp.co.nttdata.intra_mart.contentssearch.text.extraction.extractor.ExcelxExtractor">
        <property name="expansionScale" type="double">2.5</property>
      </entry>
      ...
    </mapping>
  </extractor>
  ...
</solr-extractor-config>
  • エラーログ

    以下が抽出対象ファイルの展開サイズが上限を超過していた場合のエラー例です。
    max-size × expansionScale が展開サイズ( ログの Tried to allocate an array of length xxx,xxx,xxx, )より大きくなるように展開サイズ倍率を設定します。
    jp.co.intra_mart.system.repackage.poi_5_2_3.org.apache.poi.util.RecordFormatException: Tried to allocate an array of length xxx,xxx,xxx, but the maximum length for this record type is xxx,xxx,xxx.
    If the file is not corrupt and not large, please open an issue on bugzilla to request
    increasing the maximum allowable size for this record type.
    You can set a higher override value with IOUtils.setByteArrayMaxOverride()
    

抽出テキスト文字数の上限サイズを調整する

JavaBean プロパティに文字数倍率を設定することで、テキスト抽出時の文字数の上限サイズを調整できます。
プロパティ名 name type 説明
文字数倍率 textScale double max-size × textScale を抽出されるテキストの最大文字数として設定します。

コラム

文字数倍率は 2022 Winter(Freesia) 以降から設定できます。
  • JavaBean プロパティが設定可能なテキスト抽出器クラス

    テキスト抽出器クラス デフォルト値
    jp.co.nttdata.intra_mart.contentssearch.text.extraction.extractor.WordxExtractor 0.1
    jp.co.nttdata.intra_mart.contentssearch.text.extraction.extractor.ExcelxExtractor 1
    jp.co.nttdata.intra_mart.contentssearch.text.extraction.extractor.PowerPointxExtractor 0.1
  • 設定例

<solr-extractor-config>
  <extractor name="im_default">
    <mapping>
      ...
      <entry type="application/vnd.openxmlformats-officedocument.spreadsheetml.sheet" extension="xlsx" max-size="10M" class="jp.co.nttdata.intra_mart.contentssearch.text.extraction.extractor.ExcelxExtractor">
        <property name="textScale" type="double">4</property>
      </entry>
      ...
    </mapping>
  </extractor>
  ...
</solr-extractor-config>
  • エラーログ

    以下が抽出テキストの文字数が上限を超過していた場合のエラー例です。
    max-size × textScale がテキストサイズ( ログの Size: xxxxxxxxxx )より大きくなるように文字数倍率を設定します。
    ログは MAX_TEXT_SIZE を超過したタイミングで出力されるため、実際のテキストサイズは Size: xxxxxxxxxx より大きい場合があります。
    java.lang.IllegalStateException: The text would exceed the max allowed overall size of extracted text. By default this is prevented as some documents may exhaust available memory and it may indicate that the file is used to inflate memory usage and thus could pose a security risk. You can adjust this limit via ZipSecureFile.setMaxTextSize() if you need to work with files which have a lot of text. Size: xxxxxxxxxx, limit: MAX_TEXT_SIZE: xxxxxxxxxx
    

添付オブジェクトの最小圧縮率を調整する

JavaBean プロパティに最小圧縮率を設定することで、ファイルに添付されているオブジェクトの最小圧縮率を調整できます。
プロパティ名 name type 説明
最小圧縮率 minInflateRatio double minInflateRatio を最小圧縮率として設定します。

コラム

最小圧縮率は 2022 Winter(Freesia) 以降から設定できます。
  • JavaBean プロパティが設定可能なテキスト抽出器クラス

    テキスト抽出器クラス デフォルト値
    jp.co.nttdata.intra_mart.contentssearch.text.extraction.extractor.WordxExtractor 0.01
    jp.co.nttdata.intra_mart.contentssearch.text.extraction.extractor.ExcelxExtractor 0.01
    jp.co.nttdata.intra_mart.contentssearch.text.extraction.extractor.PowerPointxExtractor 0.01
  • 設定例

<solr-extractor-config>
  <extractor name="im_default">
    <mapping>
      ...
      <entry type="application/vnd.openxmlformats-officedocument.spreadsheetml.sheet" extension="xlsx" max-size="10M" class="jp.co.nttdata.intra_mart.contentssearch.text.extraction.extractor.ExcelxExtractor">
        <property name="minInflateRatio" type="double">0.00001</property>
      </entry>
      ...
    </mapping>
  </extractor>
  ...
</solr-extractor-config>
  • エラーログ

    以下がファイルに添付されたオブジェクトの圧縮率が最小圧縮率より小さい場合のエラー例です。
    最小圧縮率にオブジェクトの圧縮率( ログの ratio: x.xxxxxxxx )より小さい値を設定します。
    java.io.IOException: Zip bomb detected! The file would exceed the max. ratio of compressed file size to the size of the expanded data.
    This may indicate that the file is used to inflate memory usage and thus could pose a security risk.
    You can adjust this limit via ZipSecureFile.setMinInflateRatio() if you need to work with files which exceed this limit.
    Uncompressed size: xxxxxx, Raw/compressed size: xxxxx, ratio: x.xxxxxxxx
    Limits: MIN_INFLATE_RATIO: x.xxxxxxxx, Entry: xxxxxxx