Рубрика:
Наука и технологии
|
Facebook
Мой мир
Вконтакте
Одноклассники
Google+
|
ЕГОРОВА М.В., Московский авиационный институт (национальный исследовательский университет), 812-я кафедра, ведущий инженер
Модель интеллектуальной системы отложенного поиска с заданными критериями
В рамках данной статьи проведен анализ имеющихся решений поиска, спроектированы алгоритмы, отвечающие требованиям, применяемым как к модели, так и к уже реализованным решениям, присутствующим в программном обеспечении. Таким образом, была разработана модель поисковых интеллектуальных систем: система поиска средством фильтрации и отбора по заданным заранее характеристикам, свойствам и атрибутам, присвоенным данным. Программа позволяет успешно выполнять поиск нужных вещей по определенным критериям. Для реализации данный программы был выбран язык программирования Java. Данная разработанная модель является простой и эффективной виспользовании человеком
Данная статья посвящена созданию модели интеллектуальной системы отложенного поиска с заданными критериями на примере разработки приложения для мобильной операционной системы. Модель интеллектуального отложенного поиска с заданными критериями – это функционал, который осуществляет поиск по искомой ключевой фразе или выражению, выполняя определенный программным кодом алгоритм, а также по характеристикам, свойствам и атрибутам, заданным массиву данных любого содержания.
Создание модели отложенного поиска с заданными критериями, как и создание любого другого функционала для мобильной операционной системы, состоит из двух важнейших этапов: разработка макета и проекта приложения, а также реализация задуманного функционала. На сегодняшний день многие компании – разработчики программного обеспечения уделяют внимание в первую очередь красоте и практичности дизайна, проектированию удобного для пользователей интерфейса и новациям в функционале. По-настоящему эффективное и полезное программное обеспечение можно построить только тогда, когда огромное внимание уделяется анализу уже существующих и представленных программ иалгоритмов.
Актуальность работы обусловлена тем, что на сегодняшний день на рынке программного обеспечения для мобильных операционных систем недостаточно высокотехнологичных, комфортных приложений, использующих систему отложенного поиска с заданными критериями. Стоит инновационному продукту выйти на рынок, как его рано или поздно копируют конкуренты, которые не привносят ничего нового, меняя лишь оболочку. Таким образом, рынок программного обеспечения перенасыщается одинаковыми и идентичными проектами, скопированными друг с друга. Однако именно это позволяет начинающим разработчикам по-настоящему выделиться и привлечь пользователей дополнительным новейшим функционалом. Это очень важно учитывать при разработке программного обеспечения для мобильных устройств, ведь пользователь может легко уйти от одного разработчика к другому в «один клик».
Для разработки программного обеспечения под управление мобильной операционной системы используется специальная программа, иными словами, среда разработки, которая представлена, сертифицирована и рекомендована компанией – разработчиком мобильной операционной системы. Данная модель разработана с учетом специфики мобильных операционных систем, на одной из которых и осуществлена реализация в виде программного кода, алгоритмов и функций. Однако подобная модель с учетом некоторых индивидуальных изменений может быть использована и на других операционных системах.
Существует ряд мобильных операционных систем. Среди всего разнообразия можно выделить три наиболее популярные мобильные операционные системы, используемые на смартфонах и прочих портативных устройствах, а именно Windows Mobile, iOS, Android.
На данный момент мобильная операционная система Android занимает большую часть рынка. Пользователи предпочитают ее по ряду причин:
- Ценовая политика производителей. На рынке смартфонов присутствуют как бюджетные, так и премиальные модели устройств, которые выполняют свои функции без нареканий. Иными словами, любой человек, желающий купить смартфон, может найти для себя подходящую модель, работающую под управлением глобальной мобильной операционной системы Android.
- Открытость операционной системы Android. Пользователи имеют возможность устанавливать внешние приложения и получать доступ к системным ресурсам. Также исходный код операционной системы Android, ее ядро ибольшая часть функций лежат в открытом доступе.
- Широкий выбор сторонних приложений. Магазин программного обеспечения «Play Маркет», представленный компанией Google, включает в себя огромное количество различного программного обеспечения нескольких ценовых категорий. Существуют платные, условно-платные и бесплатные программы и мобильные приложения, разработанные специально для платформы Android.
В основу исследования легло то программное обеспечение, которое разработано для мобильной операционной системы Android и доступно в магазине Play Маркет по нулевой цене, иными словами бесплатно. На текущий мом=ент существует масса программного обеспечения, включающего в себя реализованные модели интеллектуального поиска. Среди имеющихся в свободном доступе программных продуктов рассматриваются три различные подкатегории программ-приложений для мобильной операционной системы Android:
- Приложения-магазины и торговые площадки (альфа-версия приложения «Орматек – товары для сна», Delivery Club, «Яндекс.Маркет»);
- Приложения-мессенджеры и клиенты социальных сетей (Telegram, «Вконтакте»);
- Развлекательные (Fb2Reader, Endless Frontier, «Яндекс.Музыка»).
Приложение-магазин имеет два вида поисковых модулей:
- поисковая строка, отвечающая за поиск по конкретному ключевому слову или наименованию;
- модуль фильтрации товаров по заданным характеристикам, атрибутам и свойствам.
Рассматривая каждый из них более детально, можно выявить ряд преимуществ и недостатков каждого из имеющихся модулей интеллектуального поиска. Среди подобных характеристик, к примеру, для матраса можно встретить такие параметры, как «бренд», «наличие пружинного блока», «высота матраса», и тому подобные. Отличительной особенностью данной конкретной поисковой модели фильтрации является функционал, который выставляет в незаполненные пользователем поля значение «все». Достаточно установить лишь одну галочку в чек-бокс «пружинные», чтобы поисковая выдача отобразила все возможные варианты имеющихся в наличии пружинных матрасов разного наполнения, высоты и размерности. Многие приложения игнорируют данный аспект поискового модуля, заставляя пользователя заполнить всю информацию об искомом товаре. Ярким примером такой ошибки является ранняя версия приложения Delivery Club, являющегося интернет-площадкой для покупки и заказа еды на дом.
Модуль интеллектуальной поисковой строки, которая реализована в приложении «Орматек – товары для сна», работает не совсем корректно. Алгоритм поиска через модуль поисковой строки не разделяет введенные пользователем словосочетания на отдельные слова и ищет совпадения по конкретно введенным данным по прямому совпадению с привязанным к товару ключевым словам. Такой алгоритм реализации поиска определенно является неправильной моделью поиска с заданными критериями.
Однако не во всех приложениях и программах, а также сайтах используется подобная модель реализации интеллектуального поиска через поисковую строку. Алгоритм, которым пользуется широкая торговая площадка «Яндекс.Маркет», позволяет разбивать поисковый запрос на ряд слов, выделяет из них наиболее приоритетные согласно своей базе данных и осуществляет поисковую выдачу. Таким образом, поисковый запрос «материнка ASUS Z97K ATX» будет разбит наслова, расставлен в приоритетном порядке и в конечном итоге изменен на «Материнская плата ASUS Z97-K», по которому и будет осуществлен поиск с сопоставлением ключевых слов.
По результатам проведенного анализа стоит отметить, что приложения-магазины, обеспечивающие пользователям комфорт и оперативность в совершении реальных покупок, вне зависимости от тематики должны отвечать ряду параметров, дабы являться инновационными и современными:
- Приложения-магазины и приложения – торговые площадки обязательно должны включать оба модуля интеллектуальной системы поиска, а именно поисковую строку, работающую с информацией в карточке товара, и поисковую фильтрацию по характеристикам, атрибутам и свойствам товара.
- Алгоритм, реализованный в модели интеллектуального поиска через поисковую строку, работающий с ключевыми словами, должен обязательно включать в себя функцию «разбиения» поискового запроса по ключевым словам иавтоматический поиск по аналогичным.
- Функционал модуля интеллектуального поиска по характеристикам, атрибутам и/или свойствам должен обязательно включать в себя автоматическое игнорирование пустых и не определенных пользователем характеристик, атрибутов и/или свойств или автоматическое присвоение им соответствующих и необходимых для адекватной поисковой выдачи значений.
Акцентируя внимание на данных аспектах, разработчик модуля поисковой системы может создать по-настоящему комфортную и практичную модель интеллектуальной системы поиска с заданными критериями. Таким образом, учет данных выявленных критериев актуален для программного обеспечения, представляющего собой приложения-магазины или приложения – торговые площадки, направленные на одну и ту же конечную цель: продемонстрировать пользователю искомый товар и подвести его к покупке.
Рассматривая следующую категорию мобильного программного обеспечения, а именно приложения-мессенджеры и клиенты социальных сетей, стоит отметить, что в них, как и в приложениях-магазинах присутствует строка поиска исоответствующий функционал. Отличительная особенность таких популярных мессенджеров, как Telegram, WhatsАрp, Viber, заключается в том, что они имеют несколько активных окон (view groups), которые отличаются по своему функционалу, поисковый метод реализован практически на каждом из подобного рода окон, за некоторым исключением. Таким образом, поисковый запрос может быть произведен на окнах, содержащих контактную информацию, диалоговых окнах переписок с другими пользователями, в настройках (однако на текущий момент данный функционал вырезан, так как количество опций не так велико, чтобы пользователь мог в нем запутаться).
Для того чтобы описать алгоритм работы модуля отложенного поиска в приложении Telegram, стоит ввести понятие того, как работает модель окна приложения-мессенджера. Данный функционал реализован несколькими группами элементов, именуемых view groups и объединенных при помощи элемента layout (см. рис. 1).
Рисунок 1. Схематичное отображение окна мессенджера Telegram с выделением элементов layout и view
Из схемы видно, что «чаты», гиперссылки, открывающие диалоги с другими пользователями, представлены элементами view, объединенными в layout, по которому и ведется поиск. Иными словами, модуль отложенного поиска вприложениях-мессенджерах производит поиск по объединенным в одну подгруппу элементам. Проще говоря, поисковый запрос будет произведен не только по имени пользователя, но и по самому диалогу. Целиком и полностью аналогичная система применяется и в приложениях, являющихся клиентами социальных сетей, стоит отметить отличительную особенность, которая схожа с моделью поиска фильтром, популярной в приложениях-магазинах.
Модуль поиска, выполненный в виде поисковой строки в подобного рода программном обеспечении, очень схож с модулями поиска в приложениях-мессенджерах, за исключением одной лишь детали. Поисковый алгоритм работает так же, как в вышеописанном мессенджере Telegram, но элементы view приложения «Вконтакте» объединены в layouts согласно подразделу, в котором расположен пользователь. Таким образом, получается, достичь такого результата, что поисковый алгоритм в подразделе «группы» осуществляет поиск исключительно по наименованию групп и пабликов, в то время как поиск в подразделе «диалоги» осуществляет поиск целиком и полностью по наименованию и содержимому диалога. Из этого можно сделать вывод, что в ряде подразделов, таких как «группы», «музыка», «видео», поиск произведен по layout, содержащему исключительно view group с наименованием группы. Остальное содержимое данных подразделов вынесено в отдельный layout, закрытый от поиска. В других подразделах, таких как «новости», «диалоги», алгоритм поиска идентичен, но layout включает в себя не только элемент view group с названием, но и с содержанием, что абсолютно идентично модели поиска в приложениях-мессенджерах.
Подводя итог по данному типу программного обеспечения для мобильных операционных систем, можно убедиться, что алгоритм интеллектуального поиска с заданными критериями для данной подкатегории мобильного программного обеспечения идентичен проанализированной системе поиска в программном обеспечении вида приложения-магазины, но с внесением некоторых коррективов и изменений.
Разработчики мобильного программного обеспечения дали возможность пользователям мобильных устройств получать доступ к развлекательному функционалу через специальные приложения. Среди них можно выделить различные медиаплееры, а также полноценные игры. С точки зрения модуля поиска развлекательные медиаприложения работают по тому же принципу, что и поисковая система по подразделам в приложениях – клиентах социальных сетей. Иными словами, поиск осуществляется непосредственно по элементам view group, имеющим в своем составе название аудио- или видеофайла. Пользователь может осуществлять поиск не только по наименованию аудио- или видеофайла, но и поего размеру, дате создания/изменения, формату и так далее. Что касается игровых развлекательных приложений, то данный анализ показал интересную отличительную особенность: даже в самых сложных приложениях, использующих массивы данных, нет моделей поиска фильтром или по ключевому запросу через поисковую строку.
Игровое развлекательное приложение Endless Frontier работает с огромным массивом данных, представляющим собой перечень всех присутствующих в игре персонажей и боевых единиц (юнитов). В данном же массиве также содержится информация по характеристикам персонажей, их отличительным особенностям, однако поиск как таковой отсутствует. Единственный инструмент, которым пользователь может осуществить процесс идентификации искомого, – навигационное меню и визуальная составляющая. Таким образом, в вышеописанном «бестиарии», содержащем информацию по игровым персонажам и их характеристикам, пользователь идентифицирует искомое путем визуальной составляющей (см. рис. 2).
Рисунок 2. Отсутствие поиска в игровом приложении Endless Frontier на примере раздела «бестиарий», представляющего собой массив данных
В действительности подобный процесс также может быть охарактеризован как модель поиска, но факт остается фактом: таковым он не является. Можно сказать, что процесс визуальной идентификации и поиска через навигационное меню является одним из методов поиска, но называть его моделью интеллектуального поиска категорически нельзя.
Анализ более тяжелых и трехмерных игр, таких как Defender II и Sonic Dash, не привел к иному результату. Отмечая тот факт, что данные развлекательные приложения-игры отличаются друг от друга по жанру, геймплею и геймдизайну, стоит выделить тенденцию, что в большинстве аналогичных приложений-игр модель поиска с заданными критериями полностью отсутствует.
Подводя итоги, нельзя не отметить, что развлекательные приложения, несмотря на свою общую цель, а именно развлечение пользователя, сильно отличаются с точки зрения функционирования и реализации поисковой модели. Таким образом, видео- и аудиоплееры, а также фотогалереи имеют схожую модель поиска с приложениями-магазинами и приложениями – клиентами социальных сетей, а в приложениях-играх модель поиска отсутствует.
Анализ показал, что интеллектуальные модели поиска, используемые в мобильном программном обеспечении, можно разделить на три основные категории:
- модуль поисковой строки, осуществляющий поиск по ключевым слова;
- модуль поискового фильтра, осуществляющий поиск по характеристикам, атрибутам и свойствам;
- полное отсутствие поисковых модулей (в таком случае идентификация искомого осуществляется при помощи меню навигации и визуальной составляющей мобильного программного обеспечения).
В таблице 1 наглядно представлено, в какой категории мобильного программного обеспечения используется тот или иной поисковый метод.
Таблица 1. Поисковые методы, используемые в мобильном программном обеспечении
|
Приложения-магазины и торговые площадки |
Приложения-мессенджеры и клиенты социальных сетей |
Приложения развлекательного характера |
Модель поиска фильтром |
+ |
+ |
– (исключение: видео-, аудиоплееры) |
Модель поиска строкой по ключевым словам |
+ |
+ |
– (исключение: видео-, аудиоплееры) |
Отсутствие модели поиска (визуальное идентификация через навигацию) |
- |
– |
+ (исключение: видео-, аудиоплееры) |
Учитывая данные, представленные в таблице, можно заметить, что самый необходимый и самый часто используемый метод реализации поисковой системы – это поисковый метод, реализуемый при помощи фильтров, отбирающих искомое по заданным пользователем атрибутам, характеристикам и свойствам. Исходя из анализа можно выделить еще один важный критерий, которому должна соответствовать система интеллектуального поиска, а именно скорость работы алгоритма, проверяющего совпадения данных с заданными пользователем запросами.
Другим важным критерием является адекватность поисковой выдачи, а иными словами, работоспособность поисковой системы. Пользователь должен получать информацию, целиком и полностью соответствующую его поисковому запросу, каким бы методом и каким бы поисковым модулем он бы ни пользовался. Также в обязательном порядке ему должны быть предложены два-три аналога, частично соответствующие прямому поисковому запросу.
По итогам можно сказать, что интеллектуальная модель поиска должна соответствовать ряду общих критериев, работающих как для поисковой строки, так и для фильтрации, а также ряду индивидуальных критериев, отвечающих заправильную работу поисковой модели.
Рассмотрим разработку интеллектуальной модели отложенного поиска с заданными критериями, которая соответствует ряду требований и параметров, установленных и инициализированных ранее.
Построение модели в идеале происходит в несколько специальных этапов, а именно:
- формулировка проблемы;
- постановка целей и задач;
- выбор численного аппарата;
- отладка и корректировка модели;
- оценка точности и интерпретации результатов.
Также существуют определенные общепринятые требования, применяемые к любым моделям и характеризующие ее свойства, а именно:
- Адекватность. Данное требование характеризует способность модели отображать заданные свойства реального объекта с погрешностью не выше заданной.
- Точность. Данное требование определяет процент или степень совпадения значений параметров действительного объекта и модельного (см. рис. 3).
- Универсальность. Это характеристика модели, которая отвечает за полноту отображения свойств, заданных объекту-модели на действительном объекте.
- Экономичность. Данное требование довольно специфическое. Оно характеризует необходимые для реализации модели затраты в машинной памяти и времени.
Рисунок 3. График зависимости точности модели от ресурсов, вложенных в ее производство
Спектр разрабатываемых моделей, подчиняющихся данным требованиям, слишком широк. Сложно достичь точного соблюдения, учитывая специфику и индивидуальность каждой разрабатываемой модели. Учитывая всю специфику разработки и создания заданной модели именно поисковой системы, требования, применяемые к проектированию, могут варьироваться, изменяться и модифицироваться исходя из ряда возникших сложных нюансов. Проблемой в данном конкретном случае является разработка итоговой интеллектуальной модели, которая реализует поставленные цели и выполняет определенные и установленные для нее задачи.
Цели интеллектуальной модели поиска с заданными критериями:
- поиск по ключевым словам в массиве данных, представленных в любом виде (цифрами, буквами, словами, словосочетаниями или иными специальными символами);
- поиск по заданным характеристикам, свойствам и атрибутам;
- одновременный поиск по заданным характеристикам, свойствам, атрибутам и ключевым словам.
Задачи интеллектуальной модели поиска с заданными критериями:
- поиск совпадений между массивом данных и искомой строкой;
- идентификация в массиве данных отобранных характеристик, свойств или атрибутов;
- сортировка и выдача результатов поискового алгоритма.
Рассмотрим и реализуем поиск фильтром. Данный поиск осуществляется за счет инициализации совпадения между характеристиками, свойствами, атрибутами, присвоенными объекту, и теми характеристиками, свойствами, атрибутами, которые отобрал пользователь. Идеально с данной задачей справится поиск по переменным.
Равенство переменных, содержащихся в массиве искомых данных и общем массиве, содержащем все остальные данные, является в данном методе основным критерием, который отвечает за то, чтобы данные попали в финальный массив, содержащий результаты поиска и отображаемый пользователю.
Алгоритм работы созданной модели:
- Пользователем отбираются характеристики, свойства и атрибуты, по которым должен осуществляться поиск.
- Программа проверяет на совпадения переменные, которые содержатся в обоих массивах.
- Отобранные переменные, содержащие совпадения, записываются в новый массив.
- Новый массив с отобранными данными отображается для пользователя в качестве результатов поиска.
Согласно данному алгоритму метод поиска путем инициализации совпадений переменных является коротким, простым и эффективным способом, который успешно приведет пользователя к конечному удовлетворительному результату.
В данном конкретном случае в качестве примера для реализации будет служить программное обеспечение, именуемое «Орматек – товары для сна» и разработанное на языке Java.
Пользователь имеет ряд разнообразных массивов данных, которым заданы индивидуальные параметры в виде характеристик, атрибутов и свойств. Стоит отметить, что в данном конкретном случае каждая индивидуальная позиция сформирована в индивидуальный массив данных. Для анализа действия алгоритма необходимо отобрать минимум три разнообразных массива, содержащих абсолютно разную информацию.
Из данных таблицы 2 видно, что каждое свойство кровати задано буквенной переменной, которой присвоено значение разного типа: натуральное число, строка и так далее. Если разбивать его на массив данных в том виде, в котором онпредставлен в программе, то получится таблица 3.
Таблица 2. Схематично представленный массив данных свойств (Кровать Nuvola 1 160х200)
Длина кровати (a = 200) |
Ширина кровати (b = 160) |
Цвет кровати (c = бежевый) |
Наличие подъемного механизма (d = false) |
Таблица 3. Массив данных для поиска фильтра к кровати Nuvola 1 160х200 (c переменными)
a (=200) |
b (=160) |
c (=бежевый) |
d (=false) |
В скобках указаны значения данных переменных, а иными словами, те свойства и атрибуты, которые установлены для данной кровати.
Алгоритм работы поиска фильтра:
- Пользователь идентифицирует и обозначает те атрибуты и характеристики, которые ему интересны.
- Поисковая система проверяет наличие данных свойств в массивах представленных данных.
- Проверяются переменные, идентифицированные пользователем, с переменными, содержащимися в массиве данных, на наличие совпадений.
- Те данные, в которых идентифицированы совпадения, вносятся в новый массив.
Анализируя данный алгоритм, стоит отметить, что в доработке нуждается второй шаг, на котором поисковая система проверяет наличие данных свойств в массивах.
Иными словами, если безоговорочно следовать данному алгоритму, то в поисковую выдачу попадут также иные товары, содержащие цветовые решения (а именно шкафы, комоды, тумбы) и размерный ряд, схожий с кроватным (а именно матрасы, наматрасники).
Для решения данной проблемы необходимо разбить имеющиеся массивы данных на подкатегории согласно их типу.
Переработанный алгоритм выглядит так:
- Пользователь идентифицирует специальный атрибут, который задает подгруппу массивов данных, содержащих переменные, по которым ведется поиск.
- Поисковая система проверяет наличие данных свойств в массивах представленных данных.
- Проверяются переменные, идентифицированные пользователем, с переменными, содержащимися в массиве данных, на наличие совпадений.
- Те данные, в которых идентифицированы совпадения, вносятся в новый массив.
Переработанный алгоритм в действительности работает корректно и правильно, т.к. он учитывает подтип массива данных, идентифицируя, по каким именно массивам проводить поиск на совпадения. Затем сверяет заданные пользователем переменные с уже имеющимися и записывает совпадения в итоговый массив, который и является результатом поиска.
Реализация созданной модели, как и разработка программного обеспечения в целом, включает в себя несколько важных этапов:
- Создание модели.
- Подбор технических решений (выбор операционной системы и среды разработки).
- Разработка пользовательского интерфейса.
- Реализация алгоритма функционала.
- Тестирование и внесение корректировок.
- Подведение итогов.
Разработку программного обеспечения для операционной системы Android принято вести на языке программирования Java, но не ниже версии Java 1.5. Android Studio – лучшая среда разработки программного обеспечения дляоперационной системы Android, представленная на сегодняшний день.
Основные плюсы данной среды разработки:
- комфортная рабочая область, поддерживающая принцип работы WYSIWYG, дающий возможность наглядно разрабатывать пользовательский интерфейс;
- отладка и поиск ошибок в коде;
- возможность создавать финальный .apk-архив, поддерживаемый операционной системой Android;
- встроенный эмулятор, который имитирует смартфон или планшетный компьютер, а также любое другое мобильное устройство, работающее под управлением операционной системы Android;
- поддержка облачных сервисов хранения данных о ведущемся проекте и система контроля версий разрабатываемого мобильного программного обеспечения.
В среде разработки Android Studio визуальная составляющая реализуется по принципу WYSIWYG, что позволяет выбирать необходимые элементы из специальной палитры. С технической точки зрения она выглядит как иерархия объектов подкласса view и view groups, расположенных на едином layout, то есть на рабочей области.
Реализация алгоритма поиска через поисковый фильтр. Согласно алгоритму заданный для поискового фильтра функционал должен искать совпадения в имеющихся атрибутах и характеристиках, которые обозначаются специальными переменными.
Код реализации данного метода для одной из характеристик:
public class FilterType {
private long id;
private String name;
private String type;
private String label;
public long getId() {
return id;
}
public void setId(long id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getType() {
return type;
}
public void setType(String type) {
this.type = type;
}
public String getLabel() {
return label;
}
public void setLabel(String label) {
this.label = label;
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
FilterType that = (FilterType) o;
if (id != that.id) return false;
if (name != null ? !name.equals(that.name) : that.name != null) return false;
if (type != null ? !type.equals(that.type) : that.type != null) return false;
return !(label != null ? !label.equals(that.label) : that.label != null);
}
@Override
public int hashCode() {
int result = (int) (id ^ (id >>> 32));
result = 31 * result + (name != null ? name.hashCode() : 0);
result = 31 * result + (type != null ? type.hashCode() : 0);
result = 31 * result + (label != null ? label.hashCode() : 0);
return result;
}
@Override
public String toString() {
return "FilterType{" +
"id=" + id +
", name='" + name + '\'' +
", type='" + type + '\'' +
", label='" + label + '\'' +
'}';
}
}
Код реализации данного метода для параметра «Цвет» в созданном фильтре, который обеспечивает поиск совпадений с данными, представленными на рабочей области программы, с определенными пользователем параметрами (аналогичен для каждого выборочного элемента фильтра):
public class ProductColor {
private long id = 0;
@SerializedName("remote_id")
private long remoteId;
private String value;
private String code;
private String img;
public ProductColor() {
}
public ProductColor(long id, String value) {
this.id = id;
this.value = value;
}
public long getId() {
return id;
}
public void setId(long id) {
this.id = id;
}
public long getRemoteId() {
return remoteId;
}
public void setRemoteId(long remoteId) {
this.remoteId = remoteId;
}
public String getValue() {
return value;
}
public void setValue(String value) {
this.value = value;
}
public String getCode() {
return code;
}
public void setCode(String code) {
this.code = code;
}
public String getImg() {
return img;
}
public void setImg(String img) {
this.img = img;
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
ProductColor that = (ProductColor) o;
if (id != that.id) return false;
if (value != null ? !value.equals(that.value) : that.value != null) return false;
if (code != null ? !code.equals(that.code) : that.code != null) return false;
return !(img != null ? !img.equals(that.img) : that.img != null);
}
public boolean equalsColors(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
ProductColor that = (ProductColor) o;
if (id != that.id) return false;
if (value != null ? !value.equals(that.value) : that.value != null) return false;
return true;
}
@Override
public int hashCode() {
int result = (int) (id ^ (id >>> 32));
result = 31 * result + (int) (remoteId ^ (remoteId >>> 32));
result = 31 * result + (value != null ? value.hashCode() : 0);
result = 31 * result + (code != null ? code.hashCode() : 0);
result = 31 * result + (img != null ? img.hashCode() : 0);
return result;
}
@Override
public String toString() {
return "ProductColor{" +
"id=" + id +
", remoteId=" + remoteId +
", value='" + value + '\'' +
", code='" + code + '\'' +
", img='" + img + '\'' +
'}';
}
}
Однако для того, чтобы все работало корректно, необходимо задать специальный класс фильтра, который воспринимался бы компилятором и использовался бы при работе с фильтром. Данный код помогает инициализировать фильтр какединую системную составляющую функции поиска, иными словами задает специальный класс Filters, который характеризует работу фильтра:
public class Filters {
public Filters() {
}
public Filters(List filters) {
this.filters = filters;
}
public List getFilters() {
return filters;
}
public void setFilters(List filters) {
this.filters = filters;
}
}
Для работы фильтра также стоит внести корректировки в файл интерфейса, чтобы фильтр сохранял значения, которые установлены пользователем и не терял их при каждом новом цикле работы:
public interface FilterDialogInterface {
void onFilterSelected(String filterUrl);
void onFilterCancelled();
}
- Колисниченко Д. Н. Программирование для Android. Самоучитель. – СПб.: БХВ-Петербург, 2012. – 272 с.: ил.
- Голощапов А. Л. Google Android: системные компоненты и сетевые коммуникации. – СПб.: БХВ-Петербург. 2012. – 384 с.: ил.
- Лорен Дэрси, Шейн Кондер. Android за 24 часа. – М.: Рид Групп, 2011. – 464 с.
- МакГрат М. Программирование на Java. – СПб.: Издательство Э, 2016. – 192 с.
- http://startandroid.ru/ru/.
- http://www.colta.ru/articles/specials/4070.
Ключевые слова: модель интеллектуальной системы, iOS, Android, интеллектуальный поиск, поисковая строка, язык программирования Java, Android Studio, поисковый фильтр.
The model of an intelligent pending search system with specified criteria
Egorova M.V., Moscow Aviation Institute (National Research University), 812 Chair, Lead Engineer
Abstract: In the framework of this article, an analysis of available search solutions is made, algorithms are designed that meet the requirements applied to both the model and the solutions already implemented in the software. Thus, the model of search intelligent systems was developed: the search system by means of filtering and selection according to predetermined characteristics, properties and attributes assigned to the data. The program allows you to successfully perform a search for things you need by certain criteria. To implement this program, the Java programming language was chosen. This developed model is simple and effective in human use.
Keywords: model of intellectual system, iOS, Android, intelligent search, search string, Java programming language, Android Studio, search filter
Facebook
Мой мир
Вконтакте
Одноклассники
Google+
|