2017-05-31 3 views
1

要件:DSEの検索を使用してファセット検索を実装することですDSE検索で1つのSolr CQLクエリでドキュメントやファセットを取得できません

問題:ドキュメントやデータと中を取得できません。 1つのCQL solrクエリ使用さ

ツール&テクノロジー: Datastaxサンドボックス5.1(セントOS +仮想ボックス)としようDSE検索

のSolrを有効dsetool使用されるテーブル&(DSE検索)以下の作成:

CREATE TABLE test.employee_copy1 (
    empid int, 
    deptid int, 
    name text, 
    solr_query text, -- column got created by enabling DSE Search 
    PRIMARY KEY (empid, deptid) 
) 

次のデータを挿入しました。

INSERT INTO employee (empid,deptid,name) VALUES (100,200,'John'); 
INSERT INTO employee (empid,deptid,name) VALUES (101,201,'Helen'); 
INSERT INTO employee (empid,deptid,name) VALUES (102,201,'John'); 

Iは

http://localhost:8983/solr/test.employee/select?q=*:*&wt=json&indent=true&facet=true&facet.field=name 

期待どおりドキュメント(又はデータ)とファセットの両方を含む結果、

{ 
    "responseHeader": { 
     "status": 0, 
     "QTime": 1 
    }, 
    "response": { 
     "numFound": 3, 
     "start": 0, 
     "docs": [{ 
       "_uniqueKey": "[\"100\",\"200\"]", 
       "empid": 100, 
       "deptid": 200, 
       "name": "John" 
      }, 
      { 
       "_uniqueKey": "[\"101\",\"201\"]", 
       "empid": 101, 
       "deptid": 201, 
       "name": "Helen" 
      }, 
      { 
       "_uniqueKey": "[\"102\",\"201\"]", 
       "empid": 102, 
       "deptid": 201, 
       "name": "John" 
      } 
     ] 
    }, 
    "facet_counts": { 
     "facet_queries": {}, 
     "facet_fields": { 
      "name": [ 
       "john", 2, 
       "helen", 1 
      ] 
     }, 
     "facet_dates": {}, 
     "facet_ranges": {}, 
     "facet_intervals": {} 
    } 
} 

を得たが、次のクエリ(CQL)をしようとしたとき、以下のようにSolrの管理からファセットクエリを試しデータおよびファセットを見ることを期待Datastaxのdevcenterに、私は

select JSON * from test.employee where solr_query = '{"q":"*:*", "facet" : {"field":"name"}}'; 

ファセットが結果を得たが、それは、O持って見ますNLY面とされていないデータ:

{"facet_fields" : {"name" : {"john" : 2,"helen" : 1 } } } 

が質問:CQLクエリは、インにもかかわらず"q":"*:*"を指定するデータを返さない理由誰も説明できますか?

答えて

0

HTTPクエリインターフェイスとは異なり、DSE 5.1(または以前のバージョン)の単一のCQL solr_queryから行結果とファセットの両方を取得するのはnot possibleです。

+0

ありがとうございます。 DSE 5.1では不可能だと言いましたが、ドキュメントとファセットの両方を取得できる他のバージョンはありますか? また、この制限の背後にある技術的な理由は何ですか? –

+0

5.1をサポートしているDSEのバージョンがないことを明確にするために、私の回答を更新しました。 –

+0

これを行うことは技術的に不可能ではありませんが、ここでの懸念事項の1つは、ファセット結果とドキュメント結果の両方を同じ列ヘッダーを持つ単一の行ベースの結果に置くことです。 –

0

これは単なる製品の決定です。 Caleb氏が指摘したように、結果を解析した開発者の経験は望ましいものではないと考えられていました。さらに、分散P2Pデータストア(C *)では、2つの非同期クエリを発行する回避策として、ファセット結果に1を、「トップテン」に1を優先クエリパターンとしています。彼らは連続して行う必要はありません。

最終的に、Solrの動作が必要な場合、Solr HTTP APIをDSEで使用することができます。 CQL APIは、C *データに簡単なFTSを提供することを目的としています。

+0

2つの非同期クエリをドキュメント/データ用とファセット用の2つにすることは理にかなっています。我々はそれを行うことができます。しかし、さまざまなレイヤーまたはネットワークとNRIセットアップで2つのコールを回避したいシナリオがあります。 当社ではC *(DSEエンタープライズ)+ Solr(DSE Search)の設定があります。 C *に書き込まれたデータは、Solr(複数のC *ノード)で索引付けされます。私たちはSolr HTTP APIを使用できると述べましたが、Solr HTTP APIを直接使用すると、複数のC *クラスターですべてのデータを利用できますか? –

関連する問題