0

複数のドキュメントを含む巨大な XML ファイルがあります (必要に応じて、ドキュメントごとに複数のファイルに簡単に変換できます)。この巨大な XML のファイル サイズは約 4 GB です。ユーザーの検索をより適切かつ高速にするために、インデックスを作成する必要があります。また、XSLT を使用してこのデータを変換しています。

以下は私の基本的なXML構造です-

<Docs>
  <Doc>
    <Title t=""></Title>
    <Desc></Desc>
    <Info></Info>
  </Doc>
  <Doc>
    <Title t=""></Title>
    <Desc></Desc>
    <Info></Info>
  </Doc>
</Docs>

必要に応じて、それぞれDocを分離できます。ユーザーが特定の単語を検索した場合、XSLT を使用して完全なドキュメントを HTML 形式で表示します。

これまで Lucene を使用したことがないので、いくつか質問があります -

  1. XML ファイルと Lucene インデックス ファイルの両方を保持する必要がありますか?
  2. あと1つだけだとすると、XSLTを介して変換可能になりますか?
4

2 に答える 2

0

私の経験からすると、XML ファイルをディスク上に保持することになります。

次に、アプリケーションの起動時に、ファイルを処理して Lucene インデックスを作成します。

変更時に XML ファイル全体を再処理するという「費用のかかる」タスクを節約するために、インデックスから何かを追加/削除する関数を用意することができます。

データのインデックスが作成されたら、Lucene にクエリを実行できます。

返される結果は XML である可能性があり、XSLT を使用してビューを処理できます。

-

上記は非常に高いレベルです。「はい」と答えることができます。

実際には、データベースに保存されている Umbraco コンテンツを分析し、Lucene インデックスに入力するという同様のことを行いました (検索を容易にするためにフィールドを追加します)。

次に、RAW lucene クエリを C# に渡して結果セットをインメモリ XML として返す XSLT 拡張機能を作成しました。

<xsl:apply-templates select="$result-set/result" />

<xsl:template match="result">
<article>
  <h1><xsl:value-of select="title" /></h1>
</article>
</xsl:template>

この記事には素晴らしいアイデアがいくつかあります。http://www.ibm.com/developerworks/java/library/j-lucene/

于 2013-08-09T14:13:30.177 に答える