2016-07-26 3 views
0

私はほぼ2Gのドキュメントを持つシャードを持っています。 私は結果セットにドキュメントのほとんどが含まれているが、ソートと制限が含まれているクエリがどれだけ効率的かを理解しようとしています。
SQLデータベースでは、データベースはソートおよびリミット句を使用して、ソートされたフィールドインデックスに基づいて非常に少量の行のみをチェックできます。
Lucene/Solrも同じですか?制限節付きの大規模ソートクエリでSolr/Luceneの効率はどれくらいですか

Query example: select * sort by date limit 50 
+0

Solr/Lucentは逆インデックスを使用します。ソート情報はありません。 SQLにはb-treeがあり、これはソート済み(完全一致)の索引です。したがって、順序付けられたクエリの場合、SQLは選択されたデータベースです。 – malejpavouk

答えて

0

類似しているが異なる。 Solrの中でソート

は、ここで説明されている: https://cwiki.apache.org/confluence/display/solr/Common+Query+Parameters#CommonQueryParameters-ThesortParameter

リミット行数: https://cwiki.apache.org/confluence/display/solr/Common+Query+Parameters#CommonQueryParameters-TherowsParameter

日付フィールドはここで説明されている: https://cwiki.apache.org/confluence/display/solr/Working+with+Dates

SolrのTrieDateFieldは、(64ビットの整数を使用し文字列ではありません)。1970年1月1日以降のミリ秒を表します。 https://cwiki.apache.org/confluence/display/solr/Working+with+Dates?focusedCommentId=61338556#comment-61338556

TrieDateField型のフィールドにソートを指定してSolrに問い合わせます。 Solrはそのソートで結果を並べ替え、応答の文書数は 'rows'パラメータに基づいています。効率はSQL DBのそれに匹敵します。それを試してみてください。

+0

あなたの答えをありがとうが、私はあなたの答えで答えられていないこのようなシナリオでどのようにクエリが実行されるかに関する情報を探しています。@rleir –

+0

タイトルは「効率的」と言っています。多分あなたはそれを編集することができますか? @アヴナー・レヴィ – rleir

1

solr/luceneはfulltext-searchに焦点を当てていますので、ご注意ください。

したがって、SQLクエリは実際には "検索"(solars fulltext.searchの意味で)ではありません。これは、ソートと制限付きでデータベースからデータを抽出するようなものです。

SQLデータベースは、各行の列を直接超過しているエクセルシートのようなものです。

いいえブックからのコンテンツのテーブルのように、インデックスであるsolrの観点にはいません。

ソルで可能な日付順(*)を検索すると、solr(おそらく)は全体のインデックスから時間情報を収集し、それをソートして50後に出力をカットしますドキュメント。

これはsolrでうまく機能しますが、これをデータベースから選択する方が効率的です。データの配信(および格納)は、データ(データベース)が設計されたものとまったく同じです。

フィールドに用語を検索することに焦点を当てた、さまざまな種類のキャッシュとメカニズムがsolrにあります。 solrの焦点はonylでのデータ配信ではあまりありません。

本当に(のみ)ドキュメントを返す必要があるが、検索する必要がない場合、SQLデータベースはおそらくsolrより効率が高くなります。

しかし、検索のために用語の「行」を洞察すると、solr/luceneが選択されます。

関連する問題