2017-09-19 13 views
0

また、私はこのようにそれで子文書のリストを含むドキュメントがあります - 私はcf1が値data101を持っている子文書で照会したいのApache Solrのフィルター

{ 

    "pf1":"data1", 
    "pf2":"data2", 
    "path":"1.parent", 
    "_childDocuments":[ 
     { 
      "cf1":"data101", 
      "cf2":"data102", 
      "path":"2.child" 
     }, 
     { 
      "cf1":"data111", 
      "cf2":"data112", 
      "path":"2.child" 
     } 
    ] 

} 

を。それは私の出力がこのようなものになることを意味します。

{ 

    "pf1":"data1", 
    "pf2":"data2", 
    "path":"1.parent", 
    "_childDocuments":[ 
     { 
      "cf1":"data101", 
      "cf2":"data102", 
      "path":"2.child" 
     } 
    ] 

} 

私はこれに関するクエリを生成できません。 子ドキュメントに対してクエリを実行したり、結果を含む子を取得する方法はありますか?事前に

おかげ

答えて

0

はい、あなたはChildDocTransformer

の助けを借りて、あなたは、たとえば、あなたが今やっているように、親文書の通常のクエリを持っている必要があることを行うことができます:

q=pf1:data1 

とフィールドリストのパラメータで変圧器を適用します。

fl=pf1,pf2,path,[child parentFilter=type:parent childFilter=cf1:data101] 

parentFilterは慎重に選択する必要があります。そこで使用するクエリは親文書と一致する必要があるためです。だから、私の例ではtype:parentはあなたのプレースホルダーに過ぎず、あなたのデータにしたがって質問を出すべきです(簡単に区別できるようにいくつかのフィールドタイプを追加する必要があります)