2017-01-17 3 views
-3

私はNode.js、Cypher、およびNeo4jを使用するプロジェクトに取り組んでいます。プロジェクトのフロントエンドは時々QUICKLYランダムユーザーを引き出す必要があります。私はこの質問をインターネットで見た:このサイファークエリはどのようにランダムノードを選択しますか?

MATCH (n:User) WHERE rand() < 0.1 RETURN n LIMIT 21 

しかし、私はこれが何をしているのかわかりません。それはかなり速いようですが、私はそれを理解したいと思います。私が知っているの内訳:

MATCH | Match some nodes 
(n:User) | Let's call this node n, and it has to be of type User 
WHERE | Specify conditions for node match 
rand() | Return a random number from 0 to 0.9999... 
<  | Less than 
0.1  | ?? 
RETURN | Give back the matched node(s) 
n  | Our node(s) 
LIMIT 21 | Don't return more than 21 nodes 

rand()0.1は何をしますか?それは何とか潜在的なノードを返すように制限していますか?

このことができます場合は、あなたの質問はすでにWHERE句が成功するためにMATCHのための条件を指定し、述べたように、私は約1万ノード

+2

Cypherのドキュメントを検索し、 'rand()'の説明を読んだことがありますか?他の言語の乱数ジェネレータとほとんど同じですか? –

+1

なぜdownvote?私が知る限り、 'rand()'は0から0.99999までの乱数を返しますが、それはどのようにランダムなユーザを返しますか? – programmer5000

+1

これはwhere句の単純な評価です。したがって、各ノードでは、比較される乱数になります。ダウンボュートはおそらく、そのクエリを実行して結果を見るだけで簡単です(ノードと一緒に乱数を返すだけで、何が戻ってくるかを知ることもできます)。 –

答えて

1

を持っています。したがって、WHERE rand() < 0.1は、MATCHが10%の成功確率を持つことを意味します。

+1

「0.1」の部分について説明してくれてありがとうございました! – programmer5000

関連する問題