すでに索引付けされているフィールドに基づいてsolrから検索結果を注文する必要があります。 私の現在のapiリクエストはソートせずにこのようです。インデックス付きフィールドに基づいてソルバー検索結果を注文する
http://127.0.0.1:8000/api/v1/search/facets/?page=1&gender=Male&age__gte=19
そしてそれは、インデックス付きの順序に基づいて検索結果を提供します。しかし、私は、すでに検索されたDateTimeFieldである 'last_login'に基づいてこの結果を並べ替える必要があります。
は、ここで私は「created_atと」の値によって、デフォルトの検索順序を変更した
class ProfileSearchView(FacetMixin, HaystackViewSet):
index_models = [Profile]
serializer_class = ProfileSearchSerializer
pagination_class = PageNumberPagination
facet_serializer_class = ProfileFacetSerializer
filter_backends = [HaystackFilter]
facet_filter_backends = [HaystackFilter, HaystackFacetFilter]
def get_queryset(self, index_models=None):
if not index_models:
index_models = []
queryset = super(ProfileSearchView, self).get_queryset(index_models)
queryset = queryset.order_by('-created_at')
return queryset`
ここに私のビューセットです。しかし、次回のリクエストでは、「last_login」値に基づいて注文があります。私はこの
http://127.0.0.1:8000/api/v1/search/facets/?page=1&gender=Male&age__gte=19&sort= 'last_login'
のように私の要求に新しいパラメータを追加したが、それはどのように私は可能なこの順序付けを達成することができます
SolrError: Solr responded with an error (HTTP 400): [Reason: undefined field sort]
私にエラーを与えて?解決策を教えてください。
try "sort = last_login desc"(またはasc)、フィールド名の前後に引用符はありません – Persimmonium
@Persimmoniumご回答ありがとうございます。私はこれを試しましたが、それでも私には同じ応答があります 'SolrError:Solrがエラー(HTTP 400)で応答しました:[理由:未定義のフィールドソート]'。これは私が試していることですhttp://127.0.0.1:8000/api/v1/search/facets/?page=1&sort=last_login%20desc。 –
しかし、http:// localhost:8983/solr/select?q = *:*&facet = true&sort = last_login%20descのsolrに対する同じ要求はうまくいきます。これは私のスキーマファイルに問題がありますか? –