Solr 3.6 を実行しており、結果セットに条件付き並べ替えを適用しようとしています。明確にするために、データは入札のセットであり、現在のユーザーの入札で並べ替えるオプションを追加したいので、通常の並べ替えとして機能することはできません (クエリを実行するユーザーごとに入札が異なるため) )。
結果セットのドキュメントには「CurrentUserId」と「CurrentBid」フィールドが含まれているため、並べ替えるには次のようなものが必要だと思います。
sort=((CurrentUserId = 12345) ? CurrentBid : 0) desc
これは単なる擬似コードですが、Solr の currentUserId がユーザー ID (この例では 12345) と一致する場合は CurrentBid で並べ替え、それ以外の場合は 0 を使用するという考え方です。
次のクエリのようなものを使用して、クエリで並べ替えを行うことが、これを達成する (または少なくともソリューションの一部を形成する) 方法のようです。
http://localhost:8080/solr/select/?q=:&sort=query(CurrentUserId:10330 AND CurrentBid:[1 TO *])+desc
ただし、これは機能していないようで、次のエラーが発生します。
sort param could not be parsed as a query, and is not a field that exists in the index: ...
Solrのドキュメントには、Solr 1.4 以降からクエリ関数を並べ替えパラメーターとして使用できることが示されているため、これは機能するはずです。
これを達成する方法についてのアドバイスは大歓迎です。