5

多値インデックス フィールドのペア、author と author_norm があり、https://wiki.apache.org/solr/HierarchicalFaceting#Indexed_Terms で説明されているパターンを使用して、それらの階層ファセット フィールドを作成しまし。ファセット値は次のようになります。

0/Blow, J
1/Blow, J/Blow, Joe
1/Blow, J/Blow, Joseph
1/Blow, J/Blow, Jennifer
0/Smith, M
1/Smith, M/Smith, Michelle
1/Smith, M/Smith, Michael
1/Smith, M/Smith, Mike

著者は記事レコードに関連付けられており、ほとんどの場合、記事には多くの著者がいます。これは、100 件以上の記事を返す Solr クエリの場合、1000 件以上の著者が表示される可能性があることを意味します。

私の問題は、この階層をユーザーに表示しようとすると、facet.limit と facet.mincount が正常な値に設定されているため、第 2 レベルの値の完全なセット、つまり第 2 レベルの値がないことです。私のヒエラルキーはある時点で途絶えます。私はこのようなものを持っています:

  • ブロー、J (30)
    • ブロー、ジョー (17)
    • ブロー、ジョセフ (9)
  • スミス、M (22)
    • スミス、ミシェル (14)
    • スミス、マイケル (6)

このリストに「Blow, Jennifer (4)」と「Smith, Mike (2)」のエントリも含めたいのですが、mincount カットオフが 5 であるため、応答で返されません。紛らわしい表示 (17 + 9 != 30 など)。

1 つのオプションは、すべての第 2 レベルのリストの下部に小さな「(詳細)」リンクを配置し、ajax を介して完全なセットをフェッチすることです。私はこの解決策に夢中ではありません。なぜなら、それはユーザーに必要以上の作業やクリックを求めているからです。また、最初の第 2 レベルのリストの長さを制御できないからです。3 つの名前 + "(more)" の場合もあれば、2 つまたは 1 つの場合もあります。

階層ファセット フィールドだけに mincount=1 と limit=-1 を設定できますが、大規模なクエリ (100k ヒット) の場合、必要のない 100k+ の値を取得することになるため、それは面倒です。上位 N 個の第 1 レベル値の第 2 レベル値の完全なセットのみが必要です。

したがって、誰かがより良い提案を持っていない限り、何らかのフォローアップ クエリを実行する必要があると思います。結局のところ、ここで私が本当に求めているのは、これらの第 2 レベルの値を単一のフォローアップ クエリで取得する方法があるかどうかということです。最初の solr 応答が与えられた場合、階層の上位 N 個の第 1 レベルの値だけのすべての第 2 レベルの順列を取得するにはどうすればよいですか?

ありがとう!

PS、Solr 4.0 を使用しています。

4

1 に答える 1

0

ピボットの任意のレベルの mincount を変更できます。

facet.pivot=fieldA,filedB&f.fieldA.limit=3&f.fieldB.limit=-1

両方のフィールドが同じfacet.pivot=fieldA,filedA場合に問題が発生します。その場合、fieldA のコピーを fieldB として作成する可能性があります。

于 2014-06-17T21:48:09.347 に答える