2010-12-08 5 views
0

Je voudrais donc pouvoir trier d'abord par un attribut, puis parmi ceux ayant la même valeur d'attribut, trier de manière aléatoire.Trier les sphinx de pensée par attribut AND @random?

Comme dans:

{ :sort_mode => :extended, :order => "attribute DESC, @random ASC" } 

Dans mon cas, l'attribut est booléen, donc je veux juste ceux qui sont true à tous affichage avant ceux qui sont false, mais pour l'ordre dans chacun des true et false les compartiments doivent être aléatoires.

Pour une raison quelconque, cela ne renvoie aucun résultat. Si je modifie ce qui précède, et changer @random à @relevance, cela fonctionne:

{ :sort_mode => :extended, :order => "attribute DESC, @relevance ASC" } 

Y at-il quelque chose de mal à utiliser pour trier @random ainsi que d'autres attributs? Si oui, existe-t-il une solution différente à mon problème?

Merci!

Répondre

0

Lorsque vous utilisez @random (votre premier exemple), pouvez-vous regarder les résultats de recherche bruts - il peut y avoir une erreur ou un avertissement qui pourrait expliquer plus:

search = ThinkingSphinx.search(
    :sort_mode => :extended, 
    :order  => 'attribute DESC, @random ASC' 
) 
search.results 
search.results[:error] 
+0

qui montre: service_core index, service_delta: trier -par l'attribut '@random' non trouvé –

+0

Quelle version de Sphinx utilisez-vous? – pat

+0

0.9.9. En fait, j'ai lu quelque part que c'est une limitation de sphinx: ne peut pas trier par @random et un autre attribut. mais c'était aussi un poste en 2008, et il a dit qu'ils travaillaient sur la résolution du problème? peut-être que cela fonctionne sur 1.10-beta? mais d'après ma compréhension, le soutien de sphinx pour la bêta n'est pas trop bon? –

Questions connexes