...

пятница, 5 сентября 2014 г.

Azure Search Api Preview

2 недели назад Microsoft анонсировал Azure Search Api Preview.
Что такое Search Api Preview-?



Это сервис, предоставляющий возможность хранить, индексировать структурированные данные и производить поиск по ним получая ответ от сервера в виде json/odata через https.
Зачем?




  • Фактически, они хотят снизить порог вхождения в поисковые технологии.

  • Мы не занимаемся развертыванием Lucene, Sphinx или других поисковых движков, а получаем уже готовый движок из коробки, с которым можно работать. (Когда-то мы делали проект для Imagine Cup где использовали полнотекстовый поиск от Lucene, но развернуть его смогли не с первой попытки).

  • Мы можем не сильно ломать себе голову о том, как масштабировать наше поисковое решение. Microsoft уже предоставляет возможность иметь несколько реплик данных и партиций.

  • Мы не сильно заморачиваемся поддержанием инфраструктуры, просто потому что это облако.





Алгоритм действий



Поскольку это preview, то необходимо сначала подключить себе в Azure эту фичу.

Как только она подключена, используем такой простой алгоритм:


  1. Создаем индекс.

  2. Загружаем документы.

  3. Ищем по ранее загруженным документам.


Само 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. Сами поля в нем мы контролируем.

Вот пример типичного документа:


Запросы на поисков



Лучше всего прочесть про синтаксис составления запросов из первоисточника.

В любом случае, придется комбинировать непосредственно поиск http://ift.tt/WkZvml и фильтрацию от odata http://ift.tt/1xiwE2X

Api поддерживает операции сортировки выдачи, по страничного вывода, выбор scoring profile и так далее.


Индексы



Мы можем сами создавать индексы, указывая какие поля, какого типа мы хотим добавить, какие поля игнорировать в индексе.

Вот такой пример запроса на создание индекса.


Оценка/Scoring



В Search Api не так много механизмов кастомизации поиска, но они есть.

Один из них — это добавление к индексу алгоритма оценки/scoring. http://ift.tt/WkZvmt

Через него вы можете влиять на то какой результат будет считаться приоритетнее- боле новый или более старый, как георгафическая удаленность влияет на результат поиска(для этого в запрос придется отправить георгафические координаты, а так же сами данные должны содержать местоположение.).
Ссылки



This entry passed through the Full-Text RSS service - if this is your content and you're reading it on someone else's site, please read the FAQ at http://ift.tt/jcXqJW.


Комментариев нет:

Отправить комментарий