Буду рад любой информации относительно алгоритмов поиска по тегам.
![]() |
![]() ![]() |
![]() |
klem4 |
![]()
Сообщение
#1
|
![]() Perl. Just code it! ![]() ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 4 100 Пол: Мужской Реальное имя: Андрей Репутация: ![]() ![]() ![]() |
Буду рад любой информации относительно алгоритмов поиска по тегам.
-------------------- perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
|
klem4 |
![]()
Сообщение
#2
|
![]() Perl. Just code it! ![]() ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 4 100 Пол: Мужской Реальное имя: Андрей Репутация: ![]() ![]() ![]() |
Немного объясню что имеется в виду на примере:
Каждой записи а базе данных неких товаров (например одежды), помимо общей информации (мужская, женская, обувь, спортивная и т.д.), соответствует и некое дополнительное описания (экстравагантная яркая сумка из змеиной кожи) Вот из этого дополнительного описания мы выделяем слова экстравагантная, яркая, змеиной кожи в общий словарь тегов и словарь тегов относящихся конкретно к этому товару, то есть при поиске по тегу яркая информация об этом товаре должна попасть в набор данных. Так же необходимо предусмотреть замену тегов, то есть скажем тег яркая = (яркий, контрастный,контрастная, земетный ...) Вот интересно какбы это реализовать структуру хранения данных, чтобы поиск был максимально быстрым и полным. Сообщение отредактировано: klem4 - -------------------- perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
|
andriano |
![]()
Сообщение
#3
|
Гуру ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 168 Пол: Мужской Реальное имя: Сергей Андрианов Репутация: ![]() ![]() ![]() |
Структура данных подбиратся, исходя из требований по соотношению производительности различных операций.
Насколько я понял из условия, поиск - процедура намного более частая, чем вставка нового объекта. В этих условиях хорошим вариантом будет упорядоченный по алфавиту массив (поиск O(log(n)), вставка O(n)). Каждый объект - ключевое слово(строка) + список синоимов(указатель). Сообщение отредактировано: andriano - |
![]() ![]() |
![]() |
Текстовая версия | 31.03.2023 22:27 |