2016-09-30 4 views
1

私はその後、私は(これらのボックスのいくつかは、宝石が含まれていると言うだけで、特定の位置に配置する必要があり、別のソースを持ってsolrの固定された場所にあるいくつかのアイテムでカスタムソート順を実装する方法は?

|  BOX  | RANK | 
|----------------|--------| 
|  Box1  | 1 | 
|  Box2  | 2 | 
|  Box3  | 3 | 
|  Box4  | 4 | 
|  Box5  | 5 | 

などの引き出しという名前のMySQLのテーブルに引き出しのリストを持っているが、このテーブルjewelboxesを呼び出すことができます)。

|  BOX  | RANK | 
|----------------|--------| 
|  Box1  | 4 | 
|  Box3  | 1 | 
|  Box5  | 3 | 

Iが付着する必要があるいくつかの制約があります。

I cannot write a stored proc on these tables 

私はjewelboxesの位置は、呼び出し元の順序に関係なく、固定されなければならないSolrの上のボックスの一覧を取得したい(昇順/降順)。例えば、

昇順には次のようになります。降順

|  BOX  | RANK | 
|----------------|--------| 
|  Box3  | 1 | 
|  Box2  | 2 | 
|  Box5  | 3 | 
|  Box1  | 4 | 
|  Box4  | 5 | 

は次のようになります。

|  BOX  | RANK | 
|----------------|--------| 
|  Box3  | 1 | 
|  Box4  | 2 | 
|  Box5  | 3 | 
|  Box1  | 4 | 
|  Box2  | 5 | 

私はDIHからのSolrにこれらのテーブルをインポートし、現在の方法を考え離れて私の髪をリッピングしていますこれをする。私には2つの選択肢がありますが、どちらもあまり明確ではないので、ここであなたを助けてください。私のオプションは:

  1. 私は正しい順序を与えるような方法でクエリを書く。 http://sujitpal.blogspot.in/2011/05/custom-sorting-in-solr-using-external.html

に続くことができる任意の第三のアプローチがあります:次のリンクで説明するよう

  • がCustomFieldComparatorを書く(私たちが持っているすべては、DIHで選択クエリがあるので、これはマスターレベルのクエリのスキルが必要になります)希望の結果を得る?

    UPDATE:

    私は降順基準なしで動作することができますが、私はまだ上昇1が必要です。あなたはこのようなより多くの柔軟性を必要とするとき -

  • 答えて

    0

    :-)

    おかげで私は(私はPythonで働くとmysolrを使用https://wiki.apache.org/solr/IntegratingSolrを参照してください)あなたが慣れている言語でカスタムインデクサーを作成します。 「昇順」と「降順」の2つのフィールドを作成することもできます。ランクのリストを逆ランクで作成し、2つ目のソースを照会して両方のリストの上書きを使用するか、データを処理するために必要な処理を行います。実現可能性は、索引付けする必要のあるレコード数にも依存します。次に、各レコードを処理し、リストから2つのランキングフィールドの情報を追加して、それらをバッチでSolrサーバーに送信します。

    関連する問題