2011-11-14 1 views
0

を結果に参加できます。しかし、(IDなどの共通のフィールドに基づいて)2つのソースからのデータをリンクし、結合された情報をユーザーに表示したいと思います。私が知る限り、私には3つの選択肢があります。各ソースインデックスを作成した後:単一の結果に、検索クエリにインデックスを組み合わせること私はインデックスにLucene.netを使用して、私は、さまざまなソース(例えば、ローカルファイルシステムやデータベース)からのインデックスデータにLucene.netを使用する複数のソースから

  • 使用Lucene.netが
  • は遡及的に結果を相関させるためにいくつかのカスタムコードを作成して設定

      を。データベースまたは
    1. ストアの別々の結果セット(私の場合、それはソースと同じデータベースではありません)。そして、データを結合するクエリに基づいて新しいインデックスを作成

    オプション1は、私が何をしたいものですが、私はこれが理由のカップルのためのLuceneとどのように生きたか分からない。

    • のLuceneは、リレーショナルデータベースではありませんLuceneのが本当にやるように設計されていません。この試みて何かありますか?
    • インデックスを組み合わせると、パフォーマンスが著しく低下する可能性がありますか?

    私がオプション2に行く理由は、オプション1よりも効率的なアルゴリズムを作ることができると考えている場合だけです。論理のラインに沿って、私はLuceneデータを相互に関連付けることができます。私はそれが動作することを幸せだけど、それは妥協のように思える。オプション3上に私をリード

      データは、Luceneの(だけでなく、オリジナルと同様、データベースに格納されます
    • ソース)
    • 追加手順を導入すると、プロセスを完了するのに時間がかかります。私は、これはユーザーエクスペリエンス

    任意の提案にどのように影響するかわからないんだけど?

  • 答えて

    5

    はい、できますが、あなたは関係的思考を停止し、文書ではなく、行の観点で考え始める必要があります。または、オプション3が適切なアプローチです。あなたは何をしたいのですか:

    a)検索したいもの - lucene用語の分析フィールド
    b)完全な現存するレコードへのポインタ - 基本的にID番号またはファイルの場所
    c)可能であれば、ファイルシステムやデータベースにアクセスすることなく、検索結果を表示するのに十分なもの - lucene用語で格納されたフィールド。パフォーマンスの面で

    、あまりにも多くのオーバーヘッドまたは過負荷がないだろう。オンザフライでインデックスに物事を追加することは、それほど大きなパフォーマンスではありませんし、ルーセン自体も驚くほど速いです。私は合理的でコンポーネント化された方法でそれを構築し、必要に応じてパフォーマンスに飛び込みます。