2 недели назад Microsoft анонсировал Azure Search Api Preview.
Это сервис, предоставляющий возможность хранить, индексировать структурированные данные и производить поиск по ним получая ответ от сервера в виде json/odata через https.
Поскольку это preview, то необходимо сначала подключить себе в Azure эту фичу.
Как только она подключена, используем такой простой алгоритм:
Отказоустойчивость обеспечивается, используя реплики, а масштабируемость — используя партиции.
Всего может быть не более 36 юнитов, поэтому произведение партиций на реплики не может превышать это число 36. Таблица умножения для этого:
Надо понимать, что собрать google/bing/yandex используя search api не получится. Это решение более локальное. Чтобы понять детально ограничения стоит прочесть статью . Если кратко, то есть ограничение на количество юнитов, на входной поток, на общий объем документов.
Доступ к этому сервису есть только из новой версии портала.
Через него мы можем посмотреть статистику, заказать новые юниты.
SDK сейчас не существует, хотя сами разработчики где-то на форуме сказали, что работают над ней. На мой взгляд это существенный косяк, т.к. это повышает уровень вхождения и главное — люди сейчас понапишут своих костылей, а потом будут возмущенные возгласы, что сырая технология еще многие годы.
На страничке можно прочитать полное описание Api. В принципе типичный rest.
Api делится на несколько частей:
Хоть как-то компенсирует отсутствие SDK наличие тестового примера. Это веб приложение Adventure Work, которое позволяет искать по индексу и маленькое приложение-инициализитор индекса и документов. Очень рекомендую посмотреть, как реализована работа, перед тем как начнете писать свой код.
Мы должны понимать, что загружать мы можем не любой произвольный plain текст, а некоторый json. Сами поля в нем мы контролируем.
Вот пример типичного документа:
Лучше всего прочесть про синтаксис составления запросов из первоисточника.
В любом случае, придется комбинировать непосредственно поиск http://ift.tt/WkZvml и фильтрацию от odata http://ift.tt/1xiwE2X
Мы можем сами создавать индексы, указывая какие поля, какого типа мы хотим добавить, какие поля игнорировать в индексе.
Вот такой пример запроса на создание индекса.
В Search Api не так много механизмов кастомизации поиска, но они есть.
Один из них — это добавление к индексу алгоритма оценки/scoring. http://ift.tt/WkZvmt
Через него вы можете влиять на то какой результат будет считаться приоритетнее- боле новый или более старый, как георгафическая удаленность влияет на результат поиска(для этого в запрос придется отправить георгафические координаты, а так же сами данные должны содержать местоположение.).
Что такое 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. Сами поля в нем мы контролируем.
Вот пример типичного документа:
Запросы на поисков
Лучше всего прочесть про синтаксис составления запросов из первоисточника.
В любом случае, придется комбинировать непосредственно поиск 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.
Комментариев нет:
Отправить комментарий