1

Lucene を使用していくつかの xml ドキュメントのインデックスを作成する必要がありますが、その前に、これらの XML を解析してタグ内の情報を抽出する必要があります。

XML は次のようになります。

<?xml version="1.0" encoding="UTF-8"?>
<tt xml:lang="es" xmlns="http://www.w3.org/2006/04/ttaf1"  xmlns:tts="http://www.w3.org/2006/04/ttaf1#styling">
  <head>
        <styling>
            <style id="bl" tts:fontWeight="bold" tts:color="#FFFFFF" tts:fontSize="15" tts:fontFamily="sansSerif"/>
       </styling>
  </head>

  <body>
    <div xml:lang="es">
            <p begin="00:00.50" end="00:04.02" style="bl">Info</p>
            <p begin="00:04.32" end="00:07.68" style="bl">Different words,<br />and phrases to index</p>
            <p begin="00:11.76" end="00:16.04" style="bl">Text</p>
            <p begin="00:18.52" end="00:22.88" style="bl">More and<br />more text</p>
   </div>
  </body>
</tt>

タグ begin と end 内のタイムスタンプのみを抽出し、p タグ内のテキストにインデックスを付ける必要があります。目標は、索引付けされたテキストを照会して、それぞれがヒットしたタイムスタンプのギャップを知ることです。

たとえば、「テキスト」という単語をクエリすると、出力は次のようになります。「2 ヒット、00:11.76-00:16.04、00:18.52-00:22.88」

Lucene を使用して XML 全体のインデックス作成を開始しました。今、私はファイルを解析したいのですが、この問題を解決するための最良の近似が何であるかわかりません.

どんな助けやアドバイスも大歓迎です:) ありがとうございます!

4

2 に答える 2

3

Lucene が組み込まれているeXistデータベースにすべての XML を保存することを強くお勧めします。この組み合わせを数か月間使用していますが、多くの検索と取得の問題が非常に簡単に解決されます。

于 2011-06-20T12:22:36.613 に答える
3

SAXライブラリを使用しました(つまり、 org.xml.sax.helpers.DefaultHandler のサブクラス) を使用して XML ファイルを解析し、各 XML ドキュメントから必要な情報を独自の Document クラスに抽出し、その Document インスタンスにインデックスを付けました。(間接化は、別々に解析する必要があるが、同じインデックスにインデックスを作成する必要がある複数のドキュメント形式があるためです。) あなたの場合、 <body> 要素のそれぞれの内容が論理ドキュメントを表す場合、日付を保存できます。特定のトークンに関連付けられたペイロードとしての情報。XML を <p> レベルまで解析し、段落インスタンスを列挙し、インスタンスごとに同じ名前の新しい Field インスタンスを追加します。ここで、値はテキスト、ペイロードは適切に表現された日付情報です。(ペイロードはバイナリなので、たとえば、開始時間と終了時間に対応する 2 つの long 値を格納できます。

各要素のコンテンツを 1 つのドキュメントとして必要としない場合は、各 <p> を個別のドキュメントとして扱い、その上にペイロードを設定できます。または、日付を別のフィールドとして保存することもできます。

于 2011-06-20T21:30:44.363 に答える