2016-10-14 100 views
0

我已將我的solr文檔按字段family分組。 爲獲得第20組Solr的查詢如下Solr分組查詢分頁無法正常工作。 [Solr,Lucene]

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

結果這個查詢的是20組如下

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的價值這是396324

但是,當我想要獲取最後幾頁的數據,我會在Solr上打這個查詢

當我設置個

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結果開始396320。結果中必須有5個文件。實際的組數是386887。爲什麼ngroups不正確?

順便說一句,這個問題不存在於我已經建立的本地solr服務器。只是表明了在測試ENV

回答

1

Solr的雲這是grouping across distributed nodes一個已知的問題(這是在SolrCloud模式會發生什麼):

分組支持分佈式搜索,有一些注意事項:

目前group.func在任何分佈式搜索

group.ngroupsgroup.facet不支持要求每個組中的所有文件必須同時位於相同的碎片,以便重新準確計數轉身。在許多情況下,Document routing via composite keys可能是一個有用的解決方案。

最直接的解決方案是使用該族作爲路由密鑰的一部分,確保所有相同的族值最終在同一個節點上。由於看起來不同的家庭值的數量與節點數量相比非常高,這應該仍然可以確保跨節點有良好的文檔分佈。

取決於你實際嘗試做什麼,也可能有其他的替代解決方案(如果你只是想要一個計數,使用JSON方面可能是一個很好的解決方案)。