2015-12-01 10 views
6

私はコレクションを持ったエンティティを持っています。インデックスを作成したいと思いますが、これについてどう考えているのか分かりません。問題は、私が動的索引と同じ方法で検索することを望んでいることです。Luceneを使用しています。しかし、複雑なオブジェクトではありません。簡単な例。RavenDB - 適切なコレクションのためのインデックスを設定するLuceneQuery

{ 
    Id: "object/id", 
    Items: [ 
     { Id: "1", Name: "One"  }, 
     { Id: "2", Name: "Two"  }, 
     { Id: "3", Name: "Three" } 
    ] 
} 

そして私はのLuceneで、簡単にカラス動的インデックスインデックスに建てを照会することができます。

アイテム、名称:「ワン」

これは、クリーンで効率的な、そして私がする必要があるいくつかのもののための完璧なようだが、私は自分のインデックスで動作を再現しようとすると失敗していますかなり悪いです。私はフィールドにインデックスを付けるよう指示しますが、それでも私はそれを呼び出すことを拒否します。

public class Things_ByItemProperties : AbstractIndexCreationTask<Thing> 
{ 
    public Things_ByItemProperties() 
    { 
     Map = things => from thing in things 
        select new 
        { 
         Id = thing.Id, 
         Items = thing.Items 
        }; 

     Index(n => n.Items, FieldIndexing.Analyzed); 
    } 
} 

インデックスのコレクションの特定の部分を追加することができます。

public class Things_ByItemProperties : AbstractIndexCreationTask<Thing> 
{ 
    public Things_ByItemProperties() 
    { 
     Map = things => from thing in things 
        select new 
        { 
         Id = thing.Id, 
         Items = thing.Items, 
         Items_Name = this.Select(r => r.Name) 
        }; 

     Index(n => n.Items, FieldIndexing.Analyzed); 
    } 
} 

が、それは私がやろうとしているものではありません、私はずっと動的インデックスのようなのLuceneでそれを照会するように設定しようとしていました。これができる方法はありませんか?

答えて

1

はい、できます。しかしそれは自明ではない。 documentationをご覧ください。私は今電話していますが、もしあなたがそれにいくつかの問題があるなら、私はあなたに明日の例を与えることができます。その間、あなたはこのSO answerを見ることができます。

+0

私は問題を抱えており、これを終了する必要があるのを忘れてしまった。私があなたに今信用を授与した場合でも、賞金からボーナスポイントを得ることはできますか?それとも、ポイントをもう一度開いて再オープンする必要がありますか? – Ciel

+0

問題ありません。私は賞金に勝てないと思うが、それは問題ない。これがちょうど答えとしてマークするのを助けたら。あなたが最初にやろうとしていたことをやることができましたか? –

+0

申し訳ありませんが...私はついにこれに戻ってきています。いいえ、私は "その人"になるつもりはありません。私が賞金をもう一度払い、あなたの回答クレジットを授与されたら、それは効くでしょうか? – Ciel

関連する問題