Azure Search Api Preview
2 недели назад Microsoft анонсировал Azure Search Api Preview.Что такое Search Api Preview-? Это сервис, предоставляющий возможность хранить, индексировать структурированные данные и производить поиск по ним получая ответ от сервера в виде json/odata через https.Зачем?
Фактически, они хотят снизить порог вхождения в поисковые технологии.
Мы не занимаемся развертыванием Lucene, Sphinx или других поисковых движков, а получаем уже готовый движок из коробки, с которым можно работать. (Когда-то мы делали проект для Imagine Cup где использовали полнотекстовый поиск от Lucene, но развернуть его смогли не с первой попытки).
Мы можем не сильно ломать себе голову о том, как масштабировать наше поисковое решение. Microsoft уже предоставляет возможность иметь несколько реплик данных и партиций.
Мы не сильно заморачиваемся поддержанием инфраструктуры, просто потому что это облако.
Алгоритм действий
Поскольку это preview, то необходимо сначала подключить себе в Azure эту фичу.Как только она подключена, используем такой простой алгоритм: Создаем индекс.
Загружаем документы.
Ищем по ранее загруженным документам.
Само APi не большое
Масштабирование и отказоустойчивость
Отказоустойчивость обеспечивается, используя реплики, а масштабируемость — используя партиции.Всего может быть не более 36 юнитов, поэтому произведение партиций на реплики не может превышать это число 36. Таблица умножения для этого:
Цены и ограничения
Надо понимать, что собрать google/bing/yandex используя search api не получится. Это решение более локальное. Чтобы понять детально ограничения стоит прочесть статью. Если кратко, то есть ограничение на количество юнитов, на входной поток, на общий объем документов.Сейчас действуют 2 тарифа.
Shred (Free) — это одна нода, до 10000 документов, не более 3 индексов, и 50 мб размер хранилища. Для начала поиграться хватит.
Dedicated — тут вы уже платите. Ограничений на индексы и документы очень мало. Для кого-то будут ограничениями 25 гигов и до 15 млн документов на партицию. Ограничение по масштабируемости сейчас до 36 юнитов. Юнит — это единица оплаты. Цены сейчас порядка 125$ в месяц указаны за юнит и это со скидкой в 50%. Т.к. для поиска зарезервированы мощности, то они и стоят хорошо, но и вы можете быть уверены в производительности. Как эти 36 юнитов разбить на партиции и реплики остается на ваше усмотрение, но стоит помнить о том, что более 36 юнитов использовать не получится.
Работа с сервисом
Доступ к этому сервису есть только из новой версии портала.Через него мы можем посмотреть статистику, заказать новые юниты.
Пошаговая инструкция как настроить сервис через портал и как сделать первые запросы к нему через fiddler на создание индекса, загрузки документов и поиска по документам. Тут же как менять разные тарифные планы, как на портале посмотреть число документов.
SDK SDK сейчас не существует, хотя сами разработчики где-то на форуме сказали, что работают над ней. На мой взгляд это существенный косяк, т.к. это повышает уровень вхождения и главное — люди сейчас понапишут своих костылей, а потом будут возмущенные возгласы, что сырая технология еще многие годы.На страничке можно прочитать полное описание Api. В принципе типичный rest.Api делится на несколько частей: Работа с индексом Работа с документами Поиск документов Рекомендации (автодополнения) Тестовый пример Хоть как-то компенсирует отсутствие SDK наличие тестового примера. Это веб приложение Adventure Work, которое позволяет искать по индексу и маленькое приложение-инициализитор индекса и документов. Очень рекомендую посмотреть, как реализована работа, перед тем как начнете писать свой код.В этом приложении поиск используется в 2 эпостасиях:
в виде автокомплита, для которого используется suggestion
и непосредственно поиска.
Загрузка документов
Мы должны понимать, что загружать мы можем не любой произвольный plain текст, а некоторый json. Сами поля в нем мы контролируем.Вот пример типичного документа:
Запросы на поисков
Лучше всего прочесть про синтаксис составления запросов из первоисточника.В любом случае, придется комбинировать непосредственно поиск msdn.microsoft.com/en-us/library/azure/dn798921.aspx и фильтрацию от odata msdn.microsoft.com/en-us/library/azure/dn798920.aspxApi поддерживает операции сортировки выдачи, по страничного вывода, выбор scoring profile и так далее.
Индексы
Мы можем сами создавать индексы, указывая какие поля, какого типа мы хотим добавить, какие поля игнорировать в индексе.Вот такой пример запроса на создание индекса.
Оценка/Scoring
В Search Api не так много механизмов кастомизации поиска, но они есть.Один из них — это добавление к индексу алгоритма оценки/scoring. msdn.microsoft.com/en-us/library/dn798928.aspxЧерез него вы можете влиять на то какой результат будет считаться приоритетнее- боле новый или более старый, как георгафическая удаленность влияет на результат поиска (для этого в запрос придется отправить георгафические координаты, а так же сами данные должны содержать местоположение.).Ссылки
