2017-02-08 10 views
2

Ich habe versucht, Seitenumbruch mit Solr-Abfrage zu implementieren, aber nicht ordnungsgemäß von CQL Solr funktioniert. Bitte rate mir, ich bin neu bei Cassandra und Solr.Datastax - Cassandra CQL Solr Frage Paginierung Ausgabe

Ich benutze Cqlsh 5.0.1 | Kassandra 3.0.10.1443 | DSE 5.0.4 | CQL spec 3.4.0

1) Auswählen country_id, COUNTRY_NAME aus rptavlview.country wo solr_query = '{ "Q": ":", "Start": "1"}' Limit 5;

, wenn ich mit der obigen Abfrage versucht, ich bin immer Fehler wie unten

INVALIDREQUEST: Fehler vom Server: Code = 2200 [Invalid query] message = "Sie haben Treiber Paging aktiv, die auch aktiviert Solr tief Paginierung. Der Parameter 'start' ist nicht erlaubt. Bitte deaktivieren Sie entweder das Paging oder lesen Sie die Einschränkungen der Solr Deep Paging-Funktion und beheben Sie diese entsprechend. "

2) Wählen Sie country_id, country_name aus rptavlview.Land wo solr_query = '{"q": ":", "start": "1", "rows": "5"}';

INVALIDREQUEST: Fehler vom Server: Code = 2200 [Invalid query] message = "Nicht unterstützten Abfrageparameter: Reihen"

Als ich versuchte, von solr es funktionierte

http://MYIPADDRESS:8983/solr/rptavlview.country/select?q=% 3A & Start = 1 & rows = & 5 wt = json & Einrückung = true

"Antwort": { "numFound": 237, "Start": 1, "docs": [ { "_uniqueKey": "[\" 49 \ "\ "Weihnachtsinsel \"]",
"country_name": "Weihnachtsinsel",
"country_name_ar": "جزيرة كريسماس",
"country_id": "49" }, { "_uniqueKey": "[\" 51 \“, \ "Colombia \"]“,
"COUNTRY_NAME": "Colombia",
"country_name_ar": "كولمبيا",
"country_id": "51" }, { "_uniqueKey": "[\" 56 \ "\ " Kuba \"]",
"COUNTRY_NAME": "Kuba",
"country_name_ar": "كوبا",
„country_id ": "56" }, { "_uniqueKey": "[\" 57 \" \ "Cyprus \"]“,
"COUNTRY_NAME": "Cyprus",
"country_name_ar": "قبرص" ,
"country_id": "57" }, { "_uniqueKey": "[\" 59 \ "\ "Demokratische Republik Kongo \"]",
01.235."country_name": "Demokratische Republik Kongo",
"country_name_ar": "جمهورية الكونغو الديمقراطية",
"country_id": "59" } ] } }

warum Paginierung nicht ist Arbeit mit meiner CQL-Solr-Abfrage?

Antwort

0

Antwort für meine geposteten Frage kann

cqlsh> Paging-off von

In CQL gelöst werden;

cqlsh> select country_id, COUNTRY_NAME aus rptavlview.country wo solr_query = '{ "Q": ":", "Start": 1}' Grenze 5;

In Java - Set Größe Anweisung für Fetch

Statement Statement = new SimpleStatement (cql_query_string); Anweisung.setFetchSize (Integer.MAX_VALUE);

2

Solr unterstützt two different ways of doing pagination - einer ist der alte start Parameter, der Solr an welchem ​​Element die Ergebnismenge zu starten, und die neue ist cursorMark - was Solr sagt, wo die letzte Ergebnismenge endete und zu präsentieren Ergebnisse von der Marke und weiter.

Die letzte Möglichkeit (auch als "tiefe Paginierung" bezeichnet) ist die von Cassandra mit seinem paging_state-Element unterstützte Methode, also denke ich, dass die Solr-Integration ihre eigenen Paginierungen basierend auf den in der CQL-Abfrage angegebenen Eigenschaften ausführt. und nicht im JSON, der als Solr-Abfrage verwendet wird (da dies die Eigenschaften der Abfrage überschrieben hätte).

Ich habe den Unterschied zwischen der Verwendung eines Paging-Status/Cursor-Markierung und "alten Stils" pagination in a different answer beschrieben, der zeigen sollte, warum die Verwendung des Status/der Marke in einem verteilten Kontext überlegen ist.

+0

'country_id, country_name von rptavlview.country auswählen wo solr_query =' {"q": "*: *", "start": "1"} limit 5; "funktioniert in [cqlsh 5.0.1 | Cassandra 3.0.9.1346 | DSE 5.0.3 | CQL-Spezifikation 3.4.0 | Natives Protokoll v4] – Prajith

+0

kann mir irgendein Beispiel geben – Prajith

+0

Ich bin nicht in der Lage, CQL mit alten Start und Zeilenparameter in DSE 5.0.4 zu feuern, ** wähle * von rptavlview.country where solr_query = '{"q": "*: *", "start": "5", "rows": "3"}; **, hier der Fehler bei der Erhöhung, ** InvalidRequest: ** Fehler vom Server: code = 2200 [Ungültige Abfrage] -Nachricht = "Nicht unterstützter Abfrageparameter: rows" – Prajith

1

paar grundlegende Punkte:

  1. CQL Solr-Abfragen zu einer äquivalenten LIMIT Verzug geraten sind 10.
  2. Paginierung ist nicht standardmäßig aktiviert.
  3. SELECT Auswahl Ausdruck FROM Tabelle [WHERE solr_query = 'Suchausdruck'] [LIMIT n]

Ihre erste Frage zu beantworten: "Fehler vom Server: Code = 2200 [Invalid query] message =" Sie haben Treiber-Paging aktiviert, wodurch auch die tiefe Paginierung von Solr aktiviert wird. Der Parameter 'Start' ist nicht erlaubt. Bitte entweder Paging deaktivieren oder über Solr tief Paging Einschränkungen lesen und beheben entsprechend“

==> Bitte überprüfen "cql_solr_query_paging" property Dateiname:. DSE_install_location/resources/dse/conf/dse.yaml

Valid values are : 'driver' and 'off'; 

"Wenn 'driver' verwendet, verwendet DSE Search Paginierung (aka cursors), wenn es erkennt, dass der Treiber die Paginierung" "verwendet. Wenn 'off', ignoriert es die Einstellung des Treibers und verwendet keine Paginierung. In diesem Fall wird der Abfrageparameter ‚Paging‘ kann sie außer Kraft setzen „ Durch seinen Standard‚Aus‘in Ihrem Fall aktuelle Wert ist also‚Fahrer‘

Also, sollten Sie Ihre Abfrage ändern:...

select country_id,country_name from rptavlview.country where solr_query='{"q":"*:*"}' limit 5; 

OR:

select country_id,country_name from rptavlview.country where solr_query='{"q":"*:*","paging": null,"start":1}' limit 5; 

Mit Schalten Sie die Paginierung Eigenschaft und starten dse

. "INVALIDREQUEST: Fehler vom Server: Code = 2200 [Invalid query] message =" Uns Upported-Abfrageparameter: rows " ==> Verwenden Sie die LIMIT-Klausel, um anzugeben, wie viele Zeilen zurückgegeben werden sollen.

Weitere Informationen (bitte lesen): https://docs.datastax.com/en/datastax_enterprise/4.8/datastax_enterprise/srch/srchCql.html

Lassen Sie mich wissen, wenn Sie mehr Informationen benötigen.

+0

Hallo, ich habe deinen Beitrag ausprobiert. Zuerst habe ich ** cql_solr_query_paging: driver ** geändert, bekomme aber den gleichen Fehler wie zuvor in DSE 5.0.4. Ich habe versucht, die gleiche Abfrage in DSE 5.0.3, indem Sie es als Standard ** # cql_solr_query_paging: off **, es funktioniert gut. In beiden Fällen funktioniert es nicht in DSE 5.0.4. meine 5.0.4 cassandra läuft sowohl solr als auch spark, wird es das problem sein? – Prajith

+0

cql_solr_query_paging: Aus sollte in Ordnung sein. Bitte lass es so wie es ist. Dann versuchen Sie Ihre Anfrage. Sie sollten mit solr/funken combination in Ordnung sein. Könnten Sie mir bitte die Abfrage sagen, die Sie verwenden, wenn "cql_solr_query_paging: driver"? – cdatta

+0

'auswählen country_id, country_name von rptavlview.country wo solr_query = '{" q ":" *: * "," paging ": null," start ": 1}' limit 5;' ** UngültigeAnfrage: Fehler vom Server : code = 2200 [Ungültige Abfrage] message = "Sie haben den Treiber-Paging aktiviert, der auch die tiefe Paginierung von Solr aktiviert. Der Parameter 'start' ist nicht erlaubt. Deaktivieren Sie entweder Paging oder lesen Sie die Einschränkungen für Soltr Deep Paging." ** In dse.yaml habe ich 'cql_solr_query_paging: driver' aktualisiert – Prajith

Verwandte Themen