0

関連性スコアリングに新しいプロパティ ブースト ウェイトを適用できるように、Jackrabbit 2.0 インスタンス (実際には Day CRX 2.1 インスタンス) で Lucene 検索インデックスを再構築しようとしています。ただし、同じ時点でインデックス作成を繰り返し中止しています。カウント 3173000

*INFO * MultiIndex: indexing... /content/xxxxxx/jcr:content (3173000) (MultiIndex.java, line 1209)
*INFO * RepositoryImpl: Shutting down repository... (RepositoryImpl.java, line 1139)

(会社名は編集済み) CRX Web インスタンスを表示したままにする

java.lang.IllegalStateException: リポジトリが利用できません。

シャットダウンした理由はログに示されていません。より高いレベルのトレースでは、これら 2 つの間にこれ以上の線はありません。言及されたパスは存在し、目立たない。Jackrabbit は 100 ノードごとにパスをログに記録するため、次の 100 のいずれかが障害の原因である可能性があります。

何がうまくいかなかったのか、またはこれをデバッグする方法はありますか?

(残念ながら、これは私の深遠な質問の 1 つです。どこを見ればよいか分からないので、これ以上は言えません。)

4

1 に答える 1

0

コメントでみんなの提案をありがとう。問題は、不適切な HTML を含むコンテンツがあったことでした。具体的には<li>、閉じているかどうかに関係なく、 <select><option>:

<html><body><form>
  <select>
    <option value="1"><li></option>
  </select>
</form></body></html>

これは、Throwable である StackOverflowError でjavax.swing.text.html.parser.Parserを強制終了するため、Jackrabbit MultiIndex のエラー処理ではキャッチされません。

パーサーのクラッシュを Oracle に報告しました。Jackrabbitコアにパッチを提案します。これは、インデックス コードの周りに余分な try/catch を追加して、少なくとも問題のある正確なノードをログに記録し、可能であれば、エラーから回復して実行します索引付けについて。StackOverflowError の場合、これは回復可能だと思います。例外処理コードに戻るまでに、スタックは適切な深さまで巻き戻されています。

実際には、修正した Jackrabbit を本番環境で実行することは許可されませんが、少なくとも悪いコンテンツを特定して修正したので、同じ問題に悩まされることはありません。

于 2012-05-29T08:56:27.137 に答える