7

json オブジェクトのセットを lucene インデックスに保存しており、インデックスからも取得したいと考えています。lucene-3.4 を使用しています。

lucene でこれを実現するためのライブラリや簡単なメカニズムはありますか。

サンプル: Json オブジェクト

{
    BOOKNAME1: {
        id:1,
        name:"bname1",
        price:"p1"
    },
    BOOKNAME2: {
        id:2,
        name:"bname2",
        price:"p2"
    },
    BOOKNAME3: {
        id:3,
        name:"bname3",
        price:"p3"
    }
}

あらゆる種類の助けをいただければ幸いです。前もって感謝します、

4

2 に答える 2

12

次の方法で json オブジェクトのインデックスを作成することをお勧めします。

1) json ファイルを解析します。私は通常json simpleを使用します。

2) IndexWriterConfig を使用してインデックスを開く

3) ドキュメントをインデックスに追加します。

4) 変更をコミットしてインデックスを閉じる

5) クエリを実行する

Elasticsearch の代わりに Lucene Core を使用する場合は、JSON オブジェクトを含むファイルを入力として取得し、インデックスを作成するサンプル プロジェクトを作成しました。また、インデックスをクエリするテストを追加しました。

私は最新の Lucene バージョン (4.8) を使用しています。こちらをご覧ください。

http://ignaciosuay.com/getting-started-with-lucene-and-json-indexing/

時間があれば、「Lucene in Action」を読む価値があると思います。

それが役に立てば幸い。

于 2014-07-24T08:48:56.313 に答える
6

json 内を検索せずに保存するだけの場合は、ID を抽出するだけで済みます。ID は一意であることが望ましいです。次に、lucene ドキュメントには 2 つのフィールドがあります。

  • ID (インデックス化されているため、必ずしも保存されているわけではありません)
  • jsonそのものをそのまま(保存のみ)

json を lucene に保存したら、ID でフィルタリングして取得できます。

一方、これはelasticsearchがドキュメントに対して行うこととほとんど同じです。REST API 経由で json を送信するだけです。elasticsearch は json をそのまま保持し、デフォルトで検索可能にします。つまり、コードを記述しなくても、すぐに id で json を取得したり、それに対して検索したりできます。

また、lucene を使用すると、ドキュメントをコミットするか、インデックス リーダーを再度開くまでドキュメントを利用できませんが、elasticsearch は便利なトランザクション ログをドキュメントに追加するため、GETは常にリアルタイムです。

また、elasticsearch は、優れた分散インフラストラクチャ、ファセット、スクリプトなど、さらに多くの機能を提供します。見てみな!

于 2013-03-20T09:33:38.333 に答える