URL: https://www.opennet.ru/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID9
Нить номер: 9394
[ Назад ]

Исходное сообщение
"Поиск по нескольким ключам"

Отправлено handler2006 , 28-Фев-12 16:58 
Здравствуйте!
Имеем: массив структур, состоящих из нескольких полей (или просто таблица).
Задача: Выбрать первую удовлетворяющую условиям поиска записью Поиск осуществляется сразу по нескольким полям.
Все, что я нашел пока - это boost::multi_index_container, но он не позволяет делать выборку за дин раз - придется делать столько проходов, сколько критериев поиска
Спасибо.
Алексей

Содержание

Сообщения в этом обсуждении
"Поиск по нескольким ключам"
Отправлено pavlinux , 02-Мрт-12 22:42 
> Задача: Выбрать первую удовлетворяющую условиям поиска записью

Можно я, можно я,...

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



"Поиск по нескольким ключам"
Отправлено handler2006 , 03-Мрт-12 12:44 
Как вариант мне предложили использовать хеш полей - тогда поиск сводится к проверке только значения хеша записи.

Мне же, с моим слабоумием, вообще сложно что-то представлять да и не за чем - задача сводится лишь к тому чтобы обойтись одной простой строчкой кода, неважно, какого рода и объема код она сгенерирует


"Поиск по нескольким ключам"
Отправлено pavlinux , 05-Мрт-12 00:58 
> Как вариант мне предложили использовать хеш полей - тогда поиск сводится к
> проверке только значения хеша записи.

Например матрица 100x100, для комбинации из 2-х элементов будет иметь 1000000 хэшей. :)



"Поиск по нескольким ключам"
Отправлено handler2006 , 05-Мрт-12 10:37 
Вы меня немного неправильно поняли.
Возможно я не совсем корректно употребил термин "хеш" в данном случае.
Имеется ввиду  хранить сумму значений полей каждой записи, тогда достаточно будет только просуммировать (особым образом) поля записи и сравнить их с искомым

"Поиск по нескольким ключам"
Отправлено pavlinux , 05-Мрт-12 23:15 
>  Вы меня немного неправильно поняли.
> Возможно я не совсем корректно употребил термин "хеш" в данном случае.
> Имеется ввиду  хранить сумму значений полей каждой записи, тогда достаточно будет
> только просуммировать (особым образом) поля записи и сравнить их с искомым

1+2+3+4+5+6+7+8+9 = 45
5+5+5+5+1+5+5+5+4 = 45
...

Так можно хранить только числа Фибоначчи, ибо разложение итоговой суммы, в примере 45,
на эти числа единично, т.е. уникально.

2+5+7+12+19 = 45  

----

Короче не заморачивайся, хэш - правильный выход.


"Поиск по нескольким ключам"
Отправлено handler2006 , 06-Мрт-12 12:38 

>> только просуммировать (особым образом) поля записи и сравнить их с искомым

Ключевое слово в скобках