2017-02-08 29 views
2

Я пытался реализовать разбиение на страницы с использованием запроса solr, но не работал должным образом из CQL solr. Пожалуйста, посоветуйте мне, я новичок в Cassandra и solr.Datastax - Cassandra CQL Solr pagination issue

Я использую cqlsh 5.0.1 | Cassandra 3.0.10.1443 | DSE 5.0.4 | CQL спецификации 3.4.0

1) выберите COUNTRY_ID, COUNTRY_NAME из rptavlview.country, где solr_query = '{ "д": ":", "старт": "1"}' предел 5;

, когда я пытался с выше запроса, я получаю сообщение об ошибке, как показано ниже

InvalidRequest: Ошибка с сервера: Код = 2200 [Неверный запрос] сообщение = "Вы пейджинг драйвер активного который также активирует глубоко Solr Параметр «start» не разрешен. Пожалуйста, отключите пейджинг или прочитайте о ограничениях глубокого пейджинга Solr и исправьте их соответствующим образом ».

2) выберите country_id, country_name из rptavlview.страна, где solr_query = '{"q": ":", "start": "1", "rows": "5"}';

InvalidRequest: Ошибка от сервера: код = 2200 [Неверный запрос] сообщение = "Неподдерживаемый параметр запроса: строки"

Когда я попытался из Solr он работал

http://MYIPADDRESS:8983/solr/rptavlview.country/select?q=% 3A & начать = 1 & строк = 5 & вес = & отступа JSON = TRUE

"ответ": { "numFound": 237, "старт": 1, "документы": [ { "_uniqueKey": "[\" 49 \ "\ "Christmas Island \"]",
"COUNTRY_NAME": "Остров Рождества",
"country_name_ar": "جزيرة كريسماس",
"country_id": "49" }, { "_uniqueKey": "[\" 51 \», \ "Колумбия \"]»,
"COUNTRY_NAME": "Колумбия",
"country_name_ar": "كولمبيا",
"country_id": "51" }, { "_uniqueKey": "[\" 56 \ "\ "Куба \"]",
"COUNTRY_NAME": "Куба",
"country_name_ar": "كوبا",
«COUNTRY_ID ": "56" }, { "_uniqueKey": "[\" 57 \", \ "Кипр \"]»,
"COUNTRY_NAME": "Кипр",
"country_name_ar": "قبرص" ,
"country_id": "57" }, { "_uniqueKey": "[\" 59 \ "\ "Демократическая Республика Конго \"]",
"COUNTRY_NAME": "Демократическая Республика Конго",
"country_name_ar": "جمهورية الكونغو الديمقراطية",
"country_id": "59" } ] } }

почему пагинация не работая с моим запросом CQL solr?

ответ

0

ответ на мой вопрос, публикуемую может быть решена

В CQL

cqlsh> пейджинговой выкл;

cqlsh> выберите COUNTRY_ID, COUNTRY_NAME из rptavlview.country, где solr_query = '{ "д": ":", "старт": 1}' предел 5;

В Java - установить размер выборки для постановки

себе утверждение = новый SimpleStatement (cql_query_string); statement.setFetchSize (Integer.MAX_VALUE);

2

Solr поддерживает two different ways of doing pagination - один из них - старый параметр start, который сообщает Solr, в каком элементе запускается набор результатов, а новый - cursorMark - который сообщает Solr, где закончился последний набор результатов, и чтобы начать представление результатов от метки и далее.

Последний способ (также упоминаемый как «глубокая разбивка на страницы») является способом, поддерживаемым Cassandra с его элементом paging_state, поэтому я предполагаю, что интеграция Solr будет выполнять свою собственную разбивку на страницы, основываясь на свойствах, заданных в запросе CQL, а не в JSON, используемом как запрос Solr (так как он бы переписал свойства запроса).

Я описал разницу между использованием состояния поискового вызова/метки курсора и «старого стиля» pagination in a different answer, в котором должно быть показано, почему использование состояния/метки превосходит в распределенном контексте.

+0

Выберите страну_имя, country_name из rptavlview.country, где solr_query = '{"q": "*: *", "start": "1"}' limit 5; «отлично работает в [cqlsh 5.0.1 | Cassandra 3.0.9.1346 | DSE 5.0.3 | Спецификация CQL 3.4.0 | Собственный протокол v4] – Prajith

+0

может ли кто-нибудь предоставить мне какой-либо пример – Prajith

+0

Я не могу запустить CQL со старым параметром start и rows в DSE 5.0.4, ** выберите * из rptavlview.country, где solr_query = '{"q": "*: *", "start": "5", "rows": "3"} '; **, здесь его ошибка при сбое ** InvalidRequest: ** Ошибка сервера: code = 2200 [Invalid query] message = "Неподдерживаемый параметр запроса: rows" – Prajith

1

Несколько основных пунктов:

  1. CQL Solr запросы дефолт в эквивалентное LIMIT 10.
  2. Разбивка не по умолчанию.
  3. ВЫБРАТЬ выберите выражение из таблицы [WHERE solr_query = 'выражение поиска'] [LIMIT п]

Чтобы ответить на первый вопрос: "Ошибка с сервера: код = 2200 [Неверный запрос] сообщение =" У вас активирован пейджинг драйвера, который также активирует глубокую разбивку Solr. Параметр «start» не разрешен. Пожалуйста, либо отключить подкачку или прочитать о Solr ограничений глубоко пейджинговой и исправить соответственно»

==> Пожалуйста, проверьте "cql_solr_query_paging" свойство Имя файла:. DSE_install_location/ресурсы/DSE/CONF/dse.yaml

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

«Когда« водитель », DSE Search будет использовать разбивку на страницы (иначе говоря), когда обнаруживает, что драйвер использует разбиение на страницы« ». Когда« выключено », оно будет игнорировать настройку драйвера и не использовать разбивку на страницы. В этом случае параметр запроса «подкачки» может заменить его « По умолчанию его„выключено“Таким образом, в вашем случае текущее значение„драйвер“

Таким образом, вы должны изменить свой запрос:...

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

ИЛИ:

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

с Выключите свойства постраничной и перезапустить DSE

"InvalidRequest: Ошибка с сервера: код = 2200 [Неверный запрос] сообщение =" унны upported query: rows " ==> Используйте предложение LIMIT, чтобы указать, сколько строк будет возвращено.

Более подробная информация (пожалуйста, прочитайте): https://docs.datastax.com/en/datastax_enterprise/4.8/datastax_enterprise/srch/srchCql.html

Позвольте мне знать, если вам нужна дополнительная информация.

+0

Привет, я попробовал ваше сообщение. сначала я изменил ** cql_solr_query_paging: driver **, но получал ту же ошибку, что и раньше, в DSE 5.0.4. Я попробовал тот же запрос в DSE 5.0.3, сохранив его как по умолчанию ** # cql_solr_query_paging: off **, его работа отлично. в обоих случаях он не работает в DSE 5.0.4. мой 5.0.4 cassandra работает как solr, так и искра, будет ли это проблемой? – Prajith

+0

cql_solr_query_paging: off должно быть в порядке. Пожалуйста, оставьте это как есть. Затем попробуйте свой запрос. Вы должны быть в порядке с комбинацией solr/spark. Не могли бы вы рассказать мне запрос, который вы используете, когда «cql_solr_query_paging: driver»? – cdatta

+0

'select country_id, country_name из rptavlview.country, где solr_query = '{" q ":" *: * "," paging ": null," start ": 1}' limit 5;' ** InvalidRequest: ошибка с сервера : code = 2200 [Invalid query] message = "У вас активирован пейджинг драйвера, который также активирует глубокую разбивку Solr. Параметр« start »не разрешен. Пожалуйста, отключите пейджинг или прочитайте о ограничениях глубокого пейджинга Solr и исправьте их соответствующим образом». ** в dse.yaml, я обновил 'cql_solr_query_paging: driver' – Prajith