2016-10-14 7 views
0

私のsolr文書をフィールドfamilyでグループ化しました。Solrグループ化されたクエリページネーションが正しく機能しません。 [Solr、Lucene]

responseHeader: { 
zkConnected: true, 
status: 0, 
QTime: 1260, 
params: { 
    q: "*:*", 
    group.limit: "1", 
    start: "0", 
    group.ngroups: "true", 
    group.field: "family", 
    group: "true" 
} 
}, 
grouped: { 
family: { 
matches: 464779, 
ngroups: 396324, 
groups: [ 
{ 
    groupValue: "__fam__ME.EA.HE.728928", 
    doclist: { 
    numFound: 1, 
    start: 0, 
    maxScore: 1, 
    docs: [ 
    { 
    sku: "ME.EA.HE.728928", 
    title: "Rexton Pocket Family Hearing Instrument Fusion", 
    family: "__fam__ME.EA.HE.728928", 
    brand: "Rexton", 
    brandId: "6739", 
    inStock: false, 
    bulkDiscount: false, 
    quoteOnly: false, 
    cats: [ 
    "Hearing Machine & Components", 
    "Health & Personal Care", 
    "Medical Supplies & Equipment" 
    ], 
    leafCatIds: [ 
    "6038" 
    ], 
    parentCatIds: [ 
    "6259", 
    "4913" 
    ], 
    Type__attr__: "Pocket Family", 
    Type of Products__attr__: "Hearing Instrument", 
    price: 3790, 
    discount: 40, 
    createdAt: "2016-02-18T04:51:36Z", 
    moq: 1, 
    offerPrice: 2255, 
    suggestKeywords: [ 
    "Rexton", 
    "Pocket Family", 
    "Rexton Pocket Family" 
    ], 
    suggestPayload: "6038,Hearing Machine & Components", 
    _version_: 1548082328946868200 
    } 
    ] 
} 
}, 

次ただ、この結果には注目すべきものがNGROUPSの値であるとして、このクエリの

/select?q=*:*&group=true&group.field=family&group.ngroups=true&start=0&group.limit=1

結果は20グループで、次のように最初の20個のグループを取得するための Solrのクエリがありますこれ396324

ですが、私は最後のページのデータを取得したいとき、私はSolrの

にこのクエリを打つだろう私は 396320に開始し

select?q=*:*&group=true&group.field=family&group.ngroups=true&start=396320&group.limit=1

{ 
responseHeader: { 
zkConnected: true, 
status: 0, 
QTime: 5238, 
params: { 
    q: "*:*", 
    group.limit: "1", 
    start: "396320", 
    group.ngroups: "true", 
    group.field: "family", 
    group: "true" 
    } 
}, 
grouped: { 
    family: { 
    matches: 464779, 
    ngroups: 396324, 
    groups: [ ] 
    } 
    } 
} 

0結果。結果には5つの文書が必要です。グループの実際の数は386887です。 ngroupsが間違っているのはなぜですか?

btwこの問題はローカルsolrサーバーには存在しません。ちょうどテストのenv

答えて

1

上のSolrクラウドに表示この(SolrCloudモードで何が起こるかである)grouping across distributed nodesの既知の問題です:

グループは、分散検索のためにサポートされ、いくつかの注意点とは:

任意の分散検索でサポートされていないされてgroup.func

現在

group.ngroupsgroup.facetは、各グループ内のすべての文書を再される正確なカウントために同じシャード上に共存しなければならないことを要求します回った。 Document routing via composite keysは、多くの状況で有用な解決策となります。

最も直接的な解決策は、ファミリをルーティングキーの一部として使用して、すべての同一のファミリ値が同じノードに収まるようにすることです。ノードの数に比べて別個のファミリ値の数が非常に多いように見えるので、ノード間で文書を適切に配布することができます。

あなたが実際にやろうとしていることに応じて、他の代替ソリューションもあるかもしれません(JSONファセットを使用することは良い解決策かもしれません)。

関連する問題