С помощью этого запроса, помимо обычного регистронезависимого поиска по каталогу книг, можно реализовать быстрый AJAX-поиск. Например, пользователь вписывает в строку поиска запрос «Онегин». И в процессе ввода каждой буквы поискового запроса приложение осуществляет поиск по «оне», «онег», «онеги» и т. д., быстро предлагая пользователю подходящие книги. Поиск осуществляется аналогично существующим отдельным методам r_search_arts, r_search_persons, r_search_genres, r_search_sequences, r_search_collections, собирая ответы по всем сущностям в одну выдачу.
ID функции
r_search
Кто может вызывать
Любой пользователь.
Авторизованное приложение.
Принимаемые параметры
atype – необязательный параметр; супертип для запроса книг определенных типов:
- 1 – электронные книги (ebook и pdf);
- 2 – аудио-книги;
q* – строка с поисковым запросом. По умолчанию подбор результатов производится по широким критериям поиска (при этом минимальная длина поискового запроса – 3 символа); Но если вам известно точное название книги, то можно осуществить строгий поиск, указав дополнительный параметр strict="exact". В этом случае минимальная длина поискового запроса – 1 символ;
strict – критерии поиска. Возможные значения:
- no (по умолчанию) – широкие критерии поиска, при которых в названиях книг ищется вхождение каждого слова из поискового запроса. Например, по запросу «рекомендации» будут найдены: «Клинические рекомендации», «Рекомендации лучших специалистов» и др.;
- start – поиск только по книгам, у которых начало названий точно совпадает с поисковым запросом.Например, по запросу «рекомендации» будет найдена книга «Рекомендации лучших специалистов», а вот «Клинические рекомендации» в ответ уже не попадет;
- exact – поиск книг, название которых полностью совпадает с поисковым запросом.Например, по запросу «сон» будут найдены только книги с названием «Сон». А «Сонеты» или «Сон разума» в ответ не попадут;
limit – ограничение на количество возвращаемых книг. Работает аналогично инструкции limit в MySQL и в запросе представлен одним числом либо массивом из двух чисел N,M. Если limit указан – возвращается M книг, начиная с книги N (у первой книги номер 0). Если limit не задан – значение по умолчанию «0,20»;
anno – если параметр имеет значение «1», то в ответе к найденным книгам будут добавлены аннотации (см. annotation);
currency – валюта, в которой необходимо возвращать цены InApp'ов на книги. Если параметр не передан информация по InApp'ам (inapp_price, inapp_name) не возвращается. Допустимые значения:
- RUB – российские рубли (по умолчанию);
- USD – доллары США;
- EUR – евро;
- PLN – польские злотые;
top_n_arts – если в ответе у персоны, серии, коллекции, жанра, тега или издательства необходимо вывести информацию о самых рейтинговых книгах, то в этом параметре указывается необходимое количество книг. Не может быть больше 10.
only_arts – флаг, если равен 1, то нужно найти только арты по поисковому запросу q.
Возвращаемые значения
result* – массив объектов, содержащий найденные книги, серии, коллекции, персоны, жанры, теги, издательства. Информация о найденных единицах контента в целом идентична приходящей в ответах на r_search_arts, r_search_persons, r_search_genres, r_search_sequences, r_search_collections, но содержит дополнительный параметр:
- item_type – параметр, указывающий на сущность найденной единицы. Возможные значения:
- art – книга. Остальная возвращаемая информация соответствует ответу на запрос r_search_arts. Дополнительно в информации о книге может присутствовать атрибут region_restriction – ограничение на показ/продажу книги в стране или регионе, где книга запрещена (определяется по GeoIP запросившего пользователя). Может принимать следующие значения:
- 1 – запрещена продажа книги. Карточка книги, в том числе её обложка, рецензии, цитаты и т. д. будут показаны пользователю, но будет отсутствовать возможность купить такую книгу. Возвращается в виде строки;
- 2 – запрещен показ книги. Книгу с таким ограничением пользователь не увидит. Возвращается в виде строки;
- author – автор. Остальная возвращаемая информация соответствует ответу на запрос r_search_persons;
- serie – серия. Остальная возвращаемая информация соответствует ответу на запрос r_search_sequences;
- collection – коллекция. Остальная возвращаемая информация соответствует ответу на запрос r_search_collections;
- genre – жанр. Остальная возвращаемая информация соответствует ответу на запрос r_search_genres;
- tag – тег. Сопутствующие параметры:
- id – ID тега;
- title – название тега;
- match_weight – степень релевантности тега;
- copyright_page – издатель.
- art – книга. Остальная возвращаемая информация соответствует ответу на запрос r_search_arts. Дополнительно в информации о книге может присутствовать атрибут region_restriction – ограничение на показ/продажу книги в стране или регионе, где книга запрещена (определяется по GeoIP запросившего пользователя). Может принимать следующие значения:
Если не было найдено ни одного объекта, удовлетворяющего поисковому запросу, то массив result будет пустым.
Возможные ошибки
error_code | error_message | Описание |
---|---|---|
101069 | Слишком короткий поисковый запрос | Не допускаются поисковые запросы (параметр q) менее одного символа при strict="exact" и менее 3-х символов при других значениях strict |
101070 | Недопустимое значение в критериях поиска | В параметре strict допустимы только следующие значения:
|
101071 | Недопустимое значение в лимите возвращаемых элементов | В параметре limit должен передаваться массив из двух целых не отрицательных чисел либо одно число |
101072 | Некорректный флаг аннотации | В параметре anno указано значение, отличное от «1» |
101073 | Указана некорректная валюта | В параметре currency допустимы только следующие валюты:
|
Пример запроса на сервер
{ "app": "1", "time": "2014-11-07T16:21:02+03:00", "sha": "b79d8e9993d20da6abe78838d3c7fbf640a4c52956569bef3c685d3453316b5c", "sid": "7bad5f2fb752ee957a4ab74aaac7711g", "requests": [ { "func": "r_search_arts", "id": "search_arts", "param": { "q": "гарри поттер", "limit": ["0","5"], "currency": "RUB" } } ] }
Пример ответа сервера
{ "time": "2017-07-04T20:54:14+03:00", "success": true, "search": { "success": true, "result": [ { "item_type": "tag", "match_weight": "20810400", "title": "Гарри Поттер", "id": "193070" }, { "id": "526", "match_weight": "4544160", "title": "Гарри Поттер", "reviews_n": "7", "item_type": "serie" }, { "isbn": "978-1-78110-188-9", "first_time_sale": "2017-05-25T15:01:57+03:00", "publisher": "Pottermore", "my": "1", "mark_1": "93", "percent": "100", "type": "0", "final_price": "199.20", "genres": [ { "id": "92825", "is_tag": "1", "name": "волшебные существа" }, { "id": "5218", "name": "зарубежное фэнтези" }, { "id": "5226", "name": "книги про волшебников" }, { "is_tag": "1", "name": "магическая школа", "id": "11605" }, { "name": "магические артефакты", "is_tag": "1", "id": "42275" }, { "id": "28445", "is_tag": "1", "name": "опасные приключения" }, { "name": "пророчества и предсказания", "is_tag": "1", "id": "57845" }, { "name": "смертельная ловушка", "is_tag": "1", "id": "12585" }, { "name": "тайны прошлого", "is_tag": "1", "id": "17195" }, { "is_tag": "1", "name": "темная магия", "id": "65465" }, { "id": "8125", "name": "экранизации", "is_tag": "1" } ], "base_price": "249.00", "reviews_n": "26", "last_release": "2017-05-26T13:55:36+03:00", "mark_2": "4", "owned": 1, "mark_5": "50", "images": "6", "available_date": "2017-05-25T15:00:00+03:00", "mark_3": "4", "year": "1997", "drm": "0", "lang": "rus", "title": "Гарри Поттер и философский камень", "minage": "6", "cover": "http://www.litres.ru/pub/c/cover/28151325.jpg", "subtitle": "", "uuid": "75ca2569-da52-4aaf-a919-c8a08da48b01", "chars": "418257", "mem": "text", "can_preorder": "0", "sequences": [ { "reviews_n": "7", "arts_n": "8", "id": "526", "name": "Гарри Поттер", "sequence_number": "1" } ], "match_weight": "1581980", "id": "121626", "persons": [ { "lvl": "4", "type": "0", "id": "54058", "img": "http://www.litres.ru/static/authors/100/00/05/40/00054058.jpg", "full_name": "Дж. К. Роулинг" }, { "full_name": "Мария Спивак", "id": "46012", "lvl": "1", "type": "1" }, { "full_name": "Литагент Pottermore limited", "disabled": "1", "type": "2", "lvl": "1", "id": "11227978" } ], "mark_4": "5", "last_update": "2017-05-26T13:55:36+03:00", "item_type": "art", "year_written": "1997", "cover_h": "858", "lvl": "4", "cover_w": "570", "release_file": "28151325", "available": "1" } ] } }