1

2つのクエリを必要とするSolrソリューションが機能していますが、1つのクエリでそれを実行する方法を探しています。私の考えは、これを行う方法を見つけられれば、Solrクラスターの2倍の負荷のオーバーヘッドを負担する必要がないということです。

詳細:「fq = type:digital」というクエリフィルターを使用して、「q=camera」のような単純なクエリを実行しています。2番目のクエリは最初のクエリと同じですが、フィルターは「fq = -type:digital」のように逆です。最初のフィルターを適用して最初のセットを取得するときに単一のクエリを実行する方法があると想像しています。次に、topDocsを使用して、2番目のフィルターを使用して2番目のセットを生成し、結果をマージして返すことができます(2つのセットを並べ替えて混合するかどうかは関係ありません)。

インデックス作成中に特定のフィールドを2つの異なるグループにマークし、Solrの「グループ化」クエリを使用してデータを分割することを試みましたが、これらの応答時間は私のセットアップでは受け入れられませんでした。

私は、実験するための最もSolrに一致するアプローチの提案を探しています:2クエリソリューションのパフォーマンスを改善するための調整、または一種のカスタムSolrポストフィルターの調査(Yonikの2012年2月のブログ投稿を読んだ)。

これをSolr3.5で実装する必要がありますが、4.0にスラムダンクソリューションがあれば、最終的にはそれに移行できるようになります。

4

2 に答える 2

1

私は2つの代替アプローチを考えることができます:-

  1. 結果をフィルタリングする代わりに、可変のより高いブーストを使用して、すべての結果がtype:digital一番上に来て、残りのドキュメントが続くようにします。個別のクエリは必要ありません。ブーストはタイプ値ごとに変更できます。

  2. 他のアプローチは、デジタル以外のタイプの結果を表示しないことです。ただし、検索用語に他のタイプが存在するかどうかをユーザーが知るために、同じカウントで他のタイプのファセットを表示できます。タグ付けと除外フィルターを確認できます

于 2013-02-08T04:57:20.770 に答える
0

結果のグループ化により、必要なものが得られる場合があります。そのパラメーターでグループ化し、各グループ内の十分な数のドキュメントを指定するだけです。

しかし、そのパフォーマンスが 2 つのクエリよりも優れているかどうかをテストします。制限セクションでパフォーマンスについて言及しているという理由だけで。

于 2013-02-07T22:35:46.550 に答える