|
|
|
Индекс "не очень длинных текстов"
|
|||
|---|---|---|---|
|
#18+
Довольно много об этом говорено в последние дни ... хотелось бы "собрать до кучи" мысли. Нужен "инструмент" (модуль в mdb? отдельная mdb-шка, "подключаемая" через OpenDatabase?) для ИНДЕКСАЦИИ литералов "ограниченной длины". Какое решение является наиболее эффективным? "Индексация" означает наличие ДВУХ функционалов: 1-й: i = String_to_Long(s) 2-й: s = Long_to_String(i) - где s - строка произвольной длины - "не слишком большой", но заведомо может оказаться больше 255 символов, i - число (Long) взаимно-однозначно соответствующее строке s. То есть - прежде всего (String_to_Long), - мы РАБОТАЕМ с некоторым "расширяющимся" набором (массивом) строк и каждой встретившейся нам строке s мы должны присвоить значение i: либо НОВОЕ значение i, если данная строка встретилась нам впервые, либо - тоже самое значение i, которое мы уже раньше присвоили этой строке при первой ее встрече. (Понятно, что в системе должен храниться некий "словарь" строк …) Long_to_String – это, естественно, обратный функционал, "восстанавливающий" строку s по ее "коду" i. Наконец, о какой "эффективности" речь: 1. быстрота "прямого" функционала String_to_Long 2. быстрота "обратного" функционала Long_to_String 3. минимизация "размера хранилища" При этом считается допустимой "двухфазная" работа системы. Имеется в виду следующее: когда на вход системы поступает некий массив строк, – она должна их быстро обработать ("оцифровать"), а после этого может – не спеша, в "фоновом режиме" – заниматься ОПТИМИЗАЦИЕЙ своей внутренней структуры – с целью повышения "интегральной" эффективности. Какие - в этой задаче – возможны идеи, приемы, решения? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.08.2004, 14:31:24 |
|
||
|
Индекс "не очень длинных текстов"
|
|||
|---|---|---|---|
|
#18+
в зависимости от специфики задачи (простота кода, быстродействие, возможность использования сторонних продуктов) будут и разные решения. если требуется быстродействующее решение без использования сторонних продуктов то это мог бы быть OCX или COM объект написанный к примеру на C++ ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.08.2004, 14:38:11 |
|
||
|
Индекс "не очень длинных текстов"
|
|||
|---|---|---|---|
|
#18+
АлексейКесли требуется быстродействующее решение без использования сторонних продуктов то это мог бы быть OCX или COM объект написанный к примеру на C++ - черезвычайно желательно решение на базе MSAccess (+VBA)! ;-) Имхо, эффективность заключается в АЛГОРИТМЕ и способе организации ХРАНЕНИЯ словаря ... а вовсе не в языке реализации. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.08.2004, 14:41:14 |
|
||
|
Индекс "не очень длинных текстов"
|
|||
|---|---|---|---|
|
#18+
привет Иван. для меня (как всегда) не вполне понятно о чем речь идет. (а начиналось все так понятно - мол четыре символа в лонг хочу... я тогда подумал, чито ты base64 изобрАзить собрался - видать обознался...) :)) Если сегодня твоя тема - "хеш функции", то , имхо, с этим в "программирование" - за алгоритмами, или в руководство по capicom за описанием вызовов наличных в системе... (с выражением лица) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.08.2004, 23:44:26 |
|
||
|
Индекс "не очень длинных текстов"
|
|||
|---|---|---|---|
|
#18+
раз на аксессе так на аксессе. только это будет не профессиональный продукт а лишь подтверждение что на аксессе можно сделать все... будет существенно медленнее. создаешь mdb делаешь набор внешних функций которые обеспечивают функционал: создать / удалить именованный массив найти по номеру, найти номер по имени, добавить в массив, удалить итд использовать можно как addin или ком - объект. если поместить в папку где установлен аксесс то можно достаточно удобно обращаться. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.08.2004, 09:21:58 |
|
||
|
Индекс "не очень длинных текстов"
|
|||
|---|---|---|---|
|
#18+
VictoshaЕсли сегодня твоя тема - "хеш функции" ... - хорошо, пусть будут "хеш функции" ... а что, - слово красивое! ;-) Так как же сделать ЭФФЕКТИВНУЮ реализацию "хеш функции" КОНКРЕТНЫМИ средствами MS Access + VBA (и - для КОНКРЕТНЫХ нужд использования ее в качестве УТИЛИТЫ в аццесных проектах)? В "хеш функции", насколько я понимаю, ОСНОВНОЕ - это "бинарное дерево", ок? А индексы аццесса - это ведь и есть бинарные деревья ... так? То есть, получается, осталось только это по уму организовать ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.08.2004, 09:23:14 |
|
||
|
Индекс "не очень длинных текстов"
|
|||
|---|---|---|---|
|
#18+
сливаешь массив в таблицу, держишь постоянно открытым публичный рекордсет (данные в локальной для mdb таблице) и ищешь число методом seek по текстовому индексу ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.08.2004, 09:29:18 |
|
||
|
Индекс "не очень длинных текстов"
|
|||
|---|---|---|---|
|
#18+
авторВ "хеш функции", насколько я понимаю, ОСНОВНОЕ - это "бинарное дерево", ок? вот ок совсем тут рядом не стоял. я то про бузину, - растет в огороде. (с выражением лица) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.08.2004, 10:14:21 |
|
||
|
Индекс "не очень длинных текстов"
|
|||
|---|---|---|---|
|
#18+
АлексейК ищешь число ... по текстовому индексу - это как, сорри? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.08.2004, 10:15:46 |
|
||
|
Индекс "не очень длинных текстов"
|
|||
|---|---|---|---|
|
#18+
Victoshaя то про бузину, - растет в огороде. - бузина-то, знамо, - в огороде: Код: plaintext 1. 2. 3. А мне нужно ВЗАИМООДНОЗНАЧНОЕ соответствие набора строк и набора Long-ов ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.08.2004, 10:22:20 |
|
||
|
Индекс "не очень длинных текстов"
|
|||
|---|---|---|---|
|
#18+
создаешь табличку в которой два поля текстовое и нумератор записей от 1 и далее. первичным ключем делаешь первое, текстовое - все равно текст должен быть уникальным для твоей задачи в коде создаешь публичный уровня общего модуля объект рекордсет. при запуске любой функции вставляешь проверку что рекордсет открыт и заполнен поиск номера в рекордсете быстрее всего сделать используя метод seek объекта dao.recordset rst.seek ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.08.2004, 14:13:10 |
|
||
|
Индекс "не очень длинных текстов"
|
|||
|---|---|---|---|
|
#18+
Славься, славься на века! ;-) Осталось понять, что делать с: Иван FXSs - строка произвольной длины - "не слишком большой", но заведомо может оказаться больше 255 символов ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.08.2004, 14:30:23 |
|
||
|
Индекс "не очень длинных текстов"
|
|||
|---|---|---|---|
|
#18+
Не понял вообще о чем беседа, но может присоединенный файл чем-то поможет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.08.2004, 15:26:11 |
|
||
|
Индекс "не очень длинных текстов"
|
|||
|---|---|---|---|
|
#18+
N_A может присоединенный файл чем-то поможет. - у-упс! Хотите сказать, что эти хэши (которые генерит эта формочка используя этот объект) - они ВЗАИМООДНОЗНАЧНО соответствуют исходным строкам? То есть - типа - вероятность того, что у двух РАЗНЫХ строк окажется одинаковое значения хэша очень-очень-очень мала? Но при этом восстановить по хэшу "породившую" его строку - типа - нельзя, я правильно понимаю?? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.08.2004, 16:49:42 |
|
||
|
Индекс "не очень длинных текстов"
|
|||
|---|---|---|---|
|
#18+
авторТо есть - типа - вероятность того, что у двух РАЗНЫХ строк окажется одинаковое значения хэша очень-очень-очень мала? Но при этом восстановить по хэшу "породившую" его строку - типа - нельзя, я правильно понимаю??Да ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.08.2004, 17:12:47 |
|
||
|
|

start [/forum/topic.php?fid=45&tid=1672158]: |
0ms |
get settings: |
5ms |
get forum list: |
16ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
49ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
48ms |
get tp. blocked users: |
1ms |
| others: | 204ms |
| total: | 340ms |

| 0 / 0 |
