[fess-user 733] Re: OFFICE2010形式のオートシェイプ内検索

Back to archive index

monolith モノリス monyo****@hotma*****
2013年 6月 4日 (火) 13:57:12 JST


お世話になっております。

やまです。

s2robot_extractor.diconとxdoc2txtを使用して、
オートシェイプ(テキストボックス)内の全文検索を
を試みておりますが、うまくいかない状況です。

xdoc2txtとMicrosoft Office Filterによって
コマンドライン(xdoc2txt -i 入力 > 出力)でのテキスト抽出は行えております。

【環境】
Windows Server 2003R2 SP2
Java7Update21

【状況】
webapps\fess\WEB-INF\classesにs2robot_extractor.diconを作成。
(内容は下記参照)

xdoc2txt.exeの格納先(スペースなし)を環境変数pathに記載し、starup.batを起動。
インデックスを全て削除し、システム設定からクロールを実行しました。

fess_crawler.outにERRORは出力されておらずクロールは成功している模様。
しかし、検索を行うとs2robot_extractor.diconを作成する前と検索結果に
差異なし。(xlsxのテキストボックスが検索できない)

s2robot_extractor.diconが参照できていないと思い、
app.iconやfess.diconに<include path="s2robot_extractor.dicon"/>を追記してみました。
再起動後、インデックスを全て削除しクロールしましたが
xlsxのテキストボックスが検索できない状況は変わらず。

xdoc2txt.exeを下記場所に配置し試しましたが、検索結果変わらず。
webapps\fess\WEB-INF\classes
webapps\fess\WEB-INF\lib
webapps\fess\WEB-INF\cmd\lib
webapps\fess\WEB-INF\cmd\resources

【質問】
s2robot_extractor.dicon(定義方法、コマンド)に問題があるのでしょうか?
また、CommndExtractorからコールするプログラム(xdoc2txt.exe)の配置が不正なのでしょうか。

お手数ですが、よろしくお願いいたします。


【s2robot_extractor.dicon】
<?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.seasar.robot.extractor.impl.TikaExtractor"/>
    <component name="officeCmdExtractor" class="org.seasar.robot.extractor.impl.CommandExtractor">
        <property name="command">"cmd /c xdoc2txt -i $INPUT_FILE &gt; $OUTPUT_FILE"</property>
        <property name="outputEncoding">"UTF-8"</property>
        <property name="outputExtension">".txt"</property>
    </component>
    <component name="extractorFactory" class="org.seasar.robot.extractor.ExtractorFactory">
        <initMethod name="addExtractor">
            <arg>{"application/pdf"}</arg>
            <arg>tikaExtractor</arg>
        </initMethod>
        <initMethod name="addExtractor">
            <arg>{"application/x-tika-msoffice",
"application/vnd.openxmlformats-officedocument.presentationml.presentation",
"application/vnd.openxmlformats-officedocument.presentationml.template",
"application/vnd.openxmlformats-officedocument.presentationml.slideshow",
"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",
"application/vnd.ms-excel.sheet.macroenabled.12",
"application/vnd.openxmlformats-officedocument.spreadsheetml.template",
"application/vnd.ms-excel.template.macroenabled.12",
"application/vnd.ms-excel.addin.macroenabled.12",
"application/vnd.openxmlformats-officedocument.wordprocessingml.document",
"application/vnd.ms-word.document.macroenabled.12",
"application/vnd.openxmlformats-officedocument.wordprocessingml.template",
"application/vnd.ms-word.template.macroenabled.12"}</arg>
            <arg>officeCmdExtractor</arg>
        </initMethod>
    </component>
</components>


2013/05/23 13:20、"monolith モノリス" <monyo****@hotma*****> のメッセージ:

やまです。

お忙しい所すみませんが、よろしくお願い致します。


2013/05/22 22:00、"Shinsuke Sugaya" <shins****@yahoo*****> のメッセージ:

菅谷です。

> 毎回クロール前にプロセスを手動起動が必要でしょうか?

いいえ。Windowsでの挙動はわかりませんが、
Linux とかであれば自動起動されたと思います。

> libreofficeに何か設定が必要なのでしょうか?

時間がなくて、すぐには確認できないので、
時間ができたときに最新のlibreofficeで
確認してみようと思います。大した情報がなくて
すいません…。

よろしくお願いいたします。

shinsuke


2013年5月22日 15:37 monolith モノリス <monyo****@hotma*****>:
> やまです。
> 回答ありがとうございます。
> 
> ご指摘の通りsofficeプロセスが起動できていませんでした。
> また、プロセス待機ポートがFESSで呼び出しているポートと異なっておりました。
> 
> ポート番号を合わせプロセスを手動起動し、クロールしたところ無事にインデックス作成が完了しました。
> この時、クロール終了時にsofficeプロセスが終了するのは仕様でしょうか。毎回クロール前にプロセスを手動起動が必要でしょうか?
> 
> 本題ですが、libreofficeでインデックスを再作成してもxlsx形式のオートシェイプ内全文検索は出来ませんでした。
> 
> libreofficeに何か設定が必要なのでしょうか?
> また他にxlsxのオートシェイプ内検索で良い方法がありましたらご教授お願い致します。
> 
> よろしくお願い致します。
> 
> 
> 2013/05/21 23:13、"Shinsuke Sugaya" <shins****@yahoo*****> のメッセージ:
> 
> 菅谷です。
> 
> 確認していただきありがとうございます。
> 
>> Caused by: org.artofsolving.jodconverter.office.OfficeException: office process died with exit code 128
> 
> 上記の理由で、クロールする以前にクロールの
> プロセスの起動で失敗しているようです。
> 理由は調べないとわかりませんが、
> jodconverterでLibreOfficeに接続できなかった
> ことが原因だと思います。LibreOfficeのプロセスが
> 正しく起動できていないのかもしれないので、
> jodconverter単独のサンプル等が動くのかを
> 確認してみると良いかもしれません。
> よろしくお願いいたします。
> 
> shinsuke
> 
> 
> 2013年5月21日 13:36 monolith モノリス <monyo****@hotma*****>:
>> やまです。
>> 
>> ご回答ありがとうございます。
>> ログレベルdebugのうえ、スペース無しのディレクトリにインストールし直し再度行いました。
>> 
>> しかし、クロールが終わらないままの事象は解消されませんでした。
>> クロール停止を押したところfess.outに下記内容が出力されました。
>> 
>> 5 21, 2013 12:13:44 ??? org.artofsolving.jodconverter.office.ProcessPoolOfficeManager <init>
>> ???: ProcessManager implementation is PureJavaProcessManager
>> 5 21, 2013 12:13:44 ??? org.artofsolving.jodconverter.office.OfficeProcess start
>> ???: starting process with acceptString 'socket,host=127.0.0.1,port=2002,tcpNoDelay=1' and profileDir 'C:\fess\fess-server-8.1.0\temp\fessTmpDir_20130521121341\.jodconverter_socket_host-127.0.0.1_port-2002'
>> 5 21, 2013 12:13:44 ??? org.artofsolving.jodconverter.office.OfficeProcess start
>> ???: started process
>> Exception in thread "main" org.seasar.framework.container.IllegalMethodRuntimeException: [ESSR0060]?N???X(org.seasar.robot.extractor.impl.JodExtractor)????\?b?h(init)???????s????????B???R??org.artofsolving.jodconverter.office.OfficeException: failed to start and connect
>>      at org.seasar.framework.container.assembler.AbstractMethodAssembler.invoke(AbstractMethodAssembler.java:70)
>>      at org.seasar.framework.container.assembler.DefaultInitMethodAssembler.assemble(DefaultInitMethodAssembler.java:49)
>>      at org.seasar.framework.container.deployer.SingletonComponentDeployer.assemble(SingletonComponentDeployer.java:69)
>>      at org.seasar.framework.container.deployer.SingletonComponentDeployer.deploy(SingletonComponentDeployer.java:48)
>>      at org.seasar.framework.container.deployer.SingletonComponentDeployer.init(SingletonComponentDeployer.java:76)
>>      at org.seasar.framework.container.impl.ComponentDefImpl.init(ComponentDefImpl.java:236)
>>      at org.seasar.framework.container.impl.S2ContainerImpl.init(S2ContainerImpl.java:563)
>>      at org.seasar.framework.container.impl.S2ContainerImpl.init(S2ContainerImpl.java:560)
>>      at org.seasar.framework.container.impl.S2ContainerImpl.init(S2ContainerImpl.java:560)
>>      at org.seasar.framework.container.factory.SingletonS2ContainerFactory.init(SingletonS2ContainerFactory.java:167)
>>      at org.seasar.framework.container.servlet.SingletonS2ContainerInitializer.initialize(SingletonS2ContainerInitializer.java:55)
>>      at jp.sf.fess.exec.Crawler.main(Crawler.java:193)
>> Caused by: org.artofsolving.jodconverter.office.OfficeException: failed to start and connect
>>      at org.artofsolving.jodconverter.office.ManagedOfficeProcess.startAndWait(ManagedOfficeProcess.java:64)
>>      at org.artofsolving.jodconverter.office.PooledOfficeManager.start(PooledOfficeManager.java:101)
>>      at org.artofsolving.jodconverter.office.ProcessPoolOfficeManager.start(ProcessPoolOfficeManager.java:62)
>>      at org.seasar.robot.extractor.impl.JodExtractor.init(JodExtractor.java:95)
>>      at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>>      at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
>>      at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>>      at java.lang.reflect.Method.invoke(Method.java:601)
>>      at org.seasar.framework.util.MethodUtil.invoke(MethodUtil.java:96)
>>      at org.seasar.framework.container.assembler.AbstractMethodAssembler.invoke(AbstractMethodAssembler.java:68)
>>      ... 11 more
>> Caused by: java.util.concurrent.ExecutionException: org.artofsolving.jodconverter.office.OfficeException: could not establish connection
>>      at java.util.concurrent.FutureTask$Sync.innerGet(FutureTask.java:252)
>>      at java.util.concurrent.FutureTask.get(FutureTask.java:111)
>>      at org.artofsolving.jodconverter.office.ManagedOfficeProcess.startAndWait(ManagedOfficeProcess.java:62)
>>      ... 20 more
>> Caused by: org.artofsolving.jodconverter.office.OfficeException: could not establish connection
>>      at org.artofsolving.jodconverter.office.ManagedOfficeProcess.doStartProcessAndConnect(ManagedOfficeProcess.java:142)
>>      at org.artofsolving.jodconverter.office.ManagedOfficeProcess.access$000(ManagedOfficeProcess.java:31)
>>      at org.artofsolving.jodconverter.office.ManagedOfficeProcess$1.run(ManagedOfficeProcess.java:58)
>>      at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)
>>      at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334)
>>      at java.util.concurrent.FutureTask.run(FutureTask.java:166)
>>      at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
>>      at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
>>      at java.lang.Thread.run(Thread.java:722)
>> Caused by: org.artofsolving.jodconverter.office.OfficeException: office process died with exit code 128
>>      at org.artofsolving.jodconverter.office.ManagedOfficeProcess$6.attempt(ManagedOfficeProcess.java:136)
>>      at org.artofsolving.jodconverter.office.Retryable.execute(Retryable.java:40)
>>      at org.artofsolving.jodconverter.office.Retryable.execute(Retryable.java:30)
>>      at org.artofsolving.jodconverter.office.ManagedOfficeProcess.doStartProcessAndConnect(ManagedOfficeProcess.java:120)
>>      ... 8 more
>> 
>> 
>> 接続出来なかったエラーのようですが、ファイルシステムのクロールのためネットワークエラーでは無いと思います。
>> 
>> 原因に心当たりがございましたら、ご助言頂きたいです。
>> よろしくお願い致します。
>> 
>> 
>> 
>> 2013/05/20 21:48、"Shinsuke Sugaya" <shins****@yahoo*****> のメッセージ:
>> 
>> 菅谷です。
>> 
>> 現状の情報だけでは何とも判断できない状況です。
>> ログレベルをDEBUGなどにして確認してみてはいかがでしょうか?
>> http://fess.codelibs.org/ja/8.0/config/logging.html
>> あとはProgram Filesではなく、スペースがないところで
>> とりあえず、試してみるなどで、一つずつ問題を切り分けて
>> いただくしかないかと思います。よろしくお願いいたします。
>> 
>> shinsuke
>> 
>> 
>> 2013年5月20日 11:32 monolith モノリス <monyo****@hotma*****>:
>>> やまと申します。
>>> 
>>> Fess-user:527スレッドにて、同様の投稿があり、参考にさせて頂いた上での投稿です。
>>> 内容が重複していましたら申し訳ありません。
>>> 
>>> 〈環境〉
>>> Windows Server 2003R2 Standard SP1
>>> Java 7 update21
>>> Fess 8.1.0
>>> 
>>> 〈質問〉
>>> FESSの構築、ウェブクロールでインデックス作成は行えておりますが、表題の通りOFFICE2010形式のxlsxやdocxのオートシェイプ内検索が出来ない状態です。
>>> 
>>> Fess-user:529のCommandExtractorを
>>> http://s2robot.sandbox.seasar.org/ja/extractor-guide.html
>>> の通り設定してみても事象は変わらずでした。
>>> 
>>> 次に、LibreOfficeの利用(http://fess.codelibs.org/ja/8.0/config/use-libreoffice.html)を試しました。
>>> LibreOffice4.0インストール後、上記ページjarを配置しs2robot_extractor.diconを作成しました。
>>> 
>>> officeManagerConfiguration.setOfficeHome("/usr/lib/libreoffice")の
>>> インストールパス/usr/lib/libreofficeはWindowsでは異なるので、
>>> C:/Program Files~としました。
>>> 
>>> その後、FESSの再起動を行い、インデックス作成してみましたが
>>> クロールが終わらない状態となり、インデックス作成自体が出来なくなりました。
>>> (fess_crawier.outはInitializing DBFlute components以降進まない状態)
>>> s2robot_extractor.diconを除去すれば、クロール可能になるので定義の仕方が悪いのでしょうか?
>>> 
>>> 
>>> 大変事象がわかりづらく申し訳ありませんが、
>>> CommandExtractorかLibreOfficeどちらかでオートシェイプ内検索を行いたいと思っています。
>>> 対策方法をご教示頂けたると幸いです。
>>> 
>>> 
>>> 
>>> 
>>> _______________________________________________
>>> Fess-user mailing list
>>> Fess-****@lists*****
>>> http://lists.sourceforge.jp/mailman/listinfo/fess-user
>> 
>> _______________________________________________
>> Fess-user mailing list
>> Fess-****@lists*****
>> http://lists.sourceforge.jp/mailman/listinfo/fess-user
>> _______________________________________________
>> Fess-user mailing list
>> Fess-****@lists*****
>> http://lists.sourceforge.jp/mailman/listinfo/fess-user
> _______________________________________________
> Fess-user mailing list
> Fess-****@lists*****
> http://lists.sourceforge.jp/mailman/listinfo/fess-user
> _______________________________________________
> Fess-user mailing list
> Fess-****@lists*****
> http://lists.sourceforge.jp/mailman/listinfo/fess-user
_______________________________________________
Fess-user mailing list
Fess-****@lists*****
http://lists.sourceforge.jp/mailman/listinfo/fess-user
_______________________________________________
Fess-user mailing list
Fess-****@lists*****
http://lists.sourceforge.jp/mailman/listinfo/fess-user



Fess-user メーリングリストの案内
Back to archive index