Категория:
Прикладное ПОБюджет:
700 USDСуществует таблица базы данных содержащая информацию о нескольких десятках тысяч объектов (в перспективе, до нескольких миллионов). Необходимо разработать инструмент для получения выборок из этих данных. Что-то типа языка запросов, но с некоторыми дополнениями.
Примеры запросов:
1. найти объекты у которых в поле 1 содержится подстрока "abc" (без учета регистра)
2. найти объекты у которых в поле 1 содержится число
3. найти объекты у которых в поле 1 или 2 содержится слово "апельсин", в любой грамматической форме.
4. найти значения поля 1, такие что количество объектов с таким значением в этом поле больше 10
5. найти значения поля 1, такие что количество объектов с таким значением в этом поле, удовлетворяющих условию из запроса #2, больше 10.
И так далее. Запросы конечно можно объединять с помощью OR и AND.
Необходимо разработать сам язык запросов, а также достаточно простой инструмент для конструирования запросов.
Дополнение 1.
Сами запросы должны храниться в отдельной таблице базы данных. Кроме самого запроса там должно хранится имя запроса, его статистика использования, дополнительные свойства, количество результатов при последнем вызове и связи между отдельными запросами (можно использовать NoSQL базу данных, но не принципиально т.к. запросов будет относительно немного).
Пользователь может выполнить поиск по таблице запросов указав его характеристики и/или указать запрос, который должен быть связан с искомыми. Но тут достаточно обычного запроса SQL, ничего необычного.
Дополнение 2.
У каждого запроса есть некоторые свойства, такие как частота использования, «масштабность» (зависит от числа результатов) и другие. Также дополнительные свойства могут быть у связей соединяющих запросы.
Эти свойства могут использоваться при поиске запросов, но по большей части нужно просто зарезервировать их на будущее.
Дополнение 2.
Когда приложение выполнило запрос и получило выборку файлов оно должно начать перебирать другие запросы и проверять их соответствие выборке.
Например, приложение по запросу №3 из примера выше нашло все объекты со словом "апельсин". После этого, в фоновом режиме приложение должно проверить на полученной выборке запросы №1 и №2 и вывести статистику для этих запросов внутри этой выборки.
Конечно, должны проверяться не все запросы, а только связанные с текущим запросом.
Дополнение 3.
Пользовательский интерфейс для этого проекта будет разрабатываться отдельно, поэтому к нему нет особенных требований, возможна даже работа в текстовом режиме. Хотя для конструктора запросов все же желательно предусмотреть некоторый интерфейс.
Дополнение 4.
Так как в этой задаче разрабатывается только модуль, который будет включен в основное приложение то необходимо хорошо продумать архитектуру работы, чтобы в будущем не возникало проблем. Также и работа этого модуля будет со временем расширяться, поэтому, для ряда задач возможна реализация системы плагинов.
Дополнение 5.
Отдельной задачей является построение автоматического рубрикатора для базы данных. Некоторые поля базы данных могут содержать достаточно большой текст. Рубрикатор должен определить категорию текста, и обработав все тексты - получить иерархический список рубрик.
Эту задачу не нужно решать "с нуля", т.к. есть множество открытых наработок в этой области. Нужно определить наиболее простой и перспективные подход и реализовать его в качестве отдельного модуля. Стоимость разработки этого дополнения, пожалуйста, указывайте отдельно.
Ориентир по бюджету - $700
Но возможно изменение суммы, в любую сторону, в зависимости от конкретного предложения и опыта исполнителя.
Задача по сути не особо сложная, поэтому главное требование - сделать ее работу быстрой, а внутреннюю структуру простой, логичной и масштабируемой.
Сама по себе задача является логическим ядром для необычного и перспективного проекта. Если вам интересно - пишите, обсудим проект более подробно и возможно мы предложим вам долю в проекте, в качестве дополнения к деньгам.
http://www.weblancer.net/projects/622266.html