С помощью этого запроса, помимо обычного регистронезависимого поиска по каталогу книг, можно реализовать быстрый 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"
}
]
}
}