Вопрос:
Как я могу воспроизвести результат из приведенного ниже URL-адреса из package_search
конечная точка API с веб-интерфейсом CKAN?
https://demo.ckan.org/api/3/action/package_search?fq=num_resources:[1%20TO%20*]
Я хочу, чтобы пользователь мог фильтровать пакеты с ресурсами или без (от 0 num_resources
или от 1 до * num_resources
).
Что я пробовал:
Я уже посмотрел и попытался добавить некоторые аспекты и сортировку.
Фасет позволяет фильтровать пакеты с количеством ресурсов X (например, 1). Сортировка позволяет сортировать все наборы данных по порядку количества ресурсов, например. Сначала пакеты с 10 ресурсами, затем с 9 ресурсами, затем с 8 и т. д.
Я попытался продублировать URI API с помощью приведенного ниже
https://demo.ckan.org/dataset?num_resources=[1%20TO%20*]
Если я добавлю часть fq
, это тоже не сработает. Действие search()
захватит num_resources=[1 TO *]
и добавит его к параметру solr fq
(можно увидеть здесь с операторами журнала).
Однако после устранения неполадок я обнаружил, что действие search()
контроллера пакета CKAN позволяет вам добавлять значения в package.py#L217" rel="nofollow noreferrer">параметр фильтра solr fq
как и в вызове API, НО сначала он преобразует параметры в строку num_resources:"[1 TO *]"
. Это отлично работает, чтобы получить одно значение, но не диапазон, который мне нужен. Если я использую этот точный параметр (с кавычками, а не как указанную выше конечную точку url/api) с API, я также получаю неверный результат.
Общая информация:
- используя ckan 2.8.1
- исходная установка, развернутая в производство в соответствии с документацией, но в качестве ящика для разработки
ОБНОВЛЕНИЯ:
20.12.2018:
С тех пор я обнаружил, что q=num_resources:[1%20TO%20*]
в качестве строки запроса работает, поскольку это не экранируется в действии search()
. Параметры q
извлекаются перед кодированием.
Однако это не идеально, поскольку обновляет ввод поиска и переопределяет любые существующие строки запроса, если только вы не добавляете к строке запроса, а добавление этого в фильтры до сих пор является проблемой.
# I've switched spaces to + to help with readability.
https://demo.ckan.org/dataset?q=num_resources:[1+TO+*]+Test
2018-12-21:
Работа над реализацией IPackageController изнутри расширения. Это кажется правильным способом сделать это, учитывая обстоятельства. Добавлю реализацию после.
Тем не менее, я чувствую, что обновленную реализацию параметров можно было бы выполнить в файле ckan package_search
Получается индекс поиска и чтение организации реализованы несколько иначе, поэтому точно такая же реализация не будет работать. дополнительные параметры фактически включены как часть q
параметров, а не fq
, как поиск.
search()
плана действий / представлений ядра CKAN, хотя для поиска параметров fq. - person user3366016   schedule 21.12.2018