h2databaseのコンパクト

データを大量に削除したりすると、H2のファイルサイズと実際のデータサイズがあわなくなってくるようだけど、こんなときにコンパクトすると良いらしい。まぁ、コンパクトといっても、データをダンプ、H2のファイルの削除、リストアをしているだけな感じだけど。FessでもS2RobotのデータがH2で保存されていき、大量クロールを繰り返していくとパフォーマンスが落ちるので、適用してみた。でも、H2のサンプルにあるコンパクト手順を実行すると、シーケンスが既にあるなど言われるので、単純にS2Robotのデータを全消ししてテーブルから作り直しで対応してみた。これでテーブルを作りなおしているので、強制終了時に H2 1.2系でデータが壊れる問題も特に気にしないでも良いかなっと。これでまた数日負荷テスト…。テストに時間がかかるのが難点だな…。

h2database 1.2 で問題遭遇中

Fess 1.2 ではh2database 1.2.x を利用しようと思っているのだけど、クロール中に終了したりすると、S2RobotのBLOBデータがファイルに保存するのが失敗したりする場合があったりでエラーになる。h2 の 1.1.x のときは遭遇したことはない感じだったと思う。うーん、h2に対して投げないとだめかね…。現象を説明するのがちょっと面倒だな。

file:~へのアクセス

Fessはパスを指定してファイルシステムもクロールできるのだけど、検索結果の表示時のリンクに課題があるらしい。というわけで、たとえば、ローカルファイルシステムの c:\memo.txt とネットワークサーバーにある \\severname\memo.txt へのリンクを file:~で試してみる。HTML的には

<a href="file:/C:/memo.txt">Case 1-1</a>
<a href="file://C:/memo.txt">Case 1-2</a>
<a href="file:///C:/memo.txt">Case 1-3</a>
<a href="file://servername/memo.txt">Case 2-1</a>
<a href="file:///servername/memo.txt">Case 2-2</a>
<a href="file:////servername/memo.txt">Case 2-3</a>
<a href="file://///servername/memo.txt">Case 2-4</a>

みたいな感じ。というわけで、確認していくと、

IE6, IE7, IE8

file:/c:/memo.txt o
file://c:/memo.txt o
file:///c:/memo.txt o
file://servername/memo.txt o
file:///servername/memo.txt x
file:////servername/memo.txt o
file://///servername/memo.txt o

Firefox 3.5

file:/c:/memo.txt o
file://c:/memo.txt o
file:///c:/memo.txt o
file://servername/memo.txt x
file:///servername/memo.txt x
file:////servername/memo.txt x
file://///servername/memo.txt o

Safari 4

file:/c:/memo.txt o
file://c:/memo.txt o
file:///c:/memo.txt o
file://servername/memo.txt x
file:///servername/memo.txt x
file:////servername/memo.txt o
file://///servername/memo.txt x

Chrome 3

file:/c:/memo.txt o
file://c:/memo.txt o
file:///c:/memo.txt o
file://servername/memo.txt o
file:///servername/memo.txt x
file:////servername/memo.txt o
file://///servername/memo.txt o

Opera 10

file:/c:/memo.txt o
file://c:/memo.txt o
file:///c:/memo.txt o
file://servername/memo.txt o
file:///servername/memo.txt x
file:////servername/memo.txt x
file://///servername/memo.txt x

うーん、みんな自由な感じだな…(こんな動きをするとは知らんかった)。Fessはjava.io.Fileから取得するURIベースにやっていこうと思っているので、デフォルトでは file:/c:/memo.txtとfile:////servername/memo.txtが返ってくる。FirefoxとOperaがネットワークサーバー上にあるやつのリンクがダメになるわけね。となると、ブラウザごとの対応が必要だな。