« Hibernate Search 関連(1) | トップページ | 5年以上前のカルテ表示 »

2013年2月12日 (火)

Hibernate Search 関連(2)

うまくいったかどうかのテスト。

  • こんなカルテを作って一旦保存。

    Jugem Gurindai

  • "寿限無","グーリンダイ" で検索すると確かに出てくる。なお,検索語をいちいちクオーテートしているのは,そうしないとうまく検索できなかった(グーリンダイで検索すると,「グーリン」も「ダイ」も引っかかってくる)からなのだが,これについては増田先生にわけを教えて頂いて修正した。

    Searchjugem Searchgurindai

  • カルテを編集して,"寿限無" ,"グーリンダイ" を削除,処方を加える。

    Editjugem Editgurindal

  • 編集後なくなった "寿限無","グーリンダイ" では検索されなくなっている。

    Searcheditjugem_2 Searcheditgurindai

  • 本文と処方の AND 検索もできる。これは,ModuleModel で index していた時にはできなかった検索である。

    Searchandjugem Searchandgrindai

さて,動作は問題ないようなので,開発用マシンで全インデックスを作成してみたところ,117,673 件の DocumentModel にインデックスするのに4時間近くかかってしまった。(インデックスが 4分以下で終了していた時代が懐かしい)

INFO  boot.logger - IndexTask started at Mon Feb 11 04:58:28 JST 2013
INFO  boot.logger - IndexTask ended at Mon Feb 11 08:44:58 JST 2013

そこで,MassIndexer というのを試してみた。どうせ index は1回つくればいいことなので,client への進捗フィードバックとか全部すっとばしてコーディングしてみたところ,1時間22分で終了した。ただし注意点として,デフォルトの standalone.xml の設定だとトランザクションが 300秒 (5分) で timeout して止まってしまうので,インデックス作成の時だけ,かかる時間以上に設定しておく必要がある。下の例では 14,400秒 (4時間) に設定した。
standalone.xml の該当部分

<subsystem xmlns="urn:jboss:domain:transactions:1.2">
  <core-environment>
    <process-id>
      <uuid/>
    </process-id>
  </core-environment>
  <recovery-environment socket-binding="txn-recovery-environment" status-socket-binding="txn-status-manager"/>
  <coordinator-environment default-timeout="14400" />
</subsystem>

« Hibernate Search 関連(1) | トップページ | 5年以上前のカルテ表示 »

OpenDolphin」カテゴリの記事