• Вибір бібліотеки чи бази даних для пошуку — питаю поради

    З правил трапляються й винятки: -)

  • Вибір бібліотеки чи бази даних для пошуку — питаю поради

    2 Alex: спасибі! це саме ті поради, яких я й питав
    2 Сергей Волошин: Sphinx — це, як розумію, «інтеґроване рішення» щодо пошуку, мене просто такі не цікавлять. Не тому, що маю щось проти — але тому що сам розробляю щось такого типу.

    2 Andrew: «типові випадки» бувають різних типів. Ніж вступати в обговорення — Ви б хоч поцікавились, про що мова. Словом, облишимо це.

  • Вибір бібліотеки чи бази даних для пошуку — питаю поради

    Запити з бази в прикладі — це осібні пошуки, кожен з яких, природньо, виконується по індексу бази — саме задля цього індексу БД ц використовується. Якщо ж читати все чохом в хеш, то індекс бази не потрібен — всі ці дані можуть лежати на диску в посортоваеному порядку і, відтак, читання їх з дискового файлу буде, думаю, швидшим, аніж запит з БД.

    Щодо встроєних в перл хешів — все ясно. Але окрім просто хешів — є спеціяльні швидкі алґоритми типу «префіксного дерева» — ru.wikipedia.org/...ефиксное_дерево — і зовсім не факт, що в перлі вони реалізовані, оскільки перловий хеш, це структура, яка повинна і швидко читатись, і швидко формуватись. Мені ж потрібне тільки швидке читання (бо читань — мільйони, а сформувати структру треба разово). Ось такі алґоритми — вже розроблені, відлагоджені і оптимізовані — я й шукаю. Не думаю, що вибір, написання і оптимізація такого алґоритму — це 10 рядків, ой, не думаю.

  • Вибір бібліотеки чи бази даних для пошуку — питаю поради

    Рекомендація «повнотекстового пошуку» та инших готових рішень — не приймається, даруйте.
    Що ж до того, щоб вичитувати всі дані з MySQL у внутрішній хеш — для цієї процедури MySQL, вважаю, не потрібен, оскільке скоріше буде вичитати всі ці ж дані в пам"ять зі спеціяльно подготованих файлів. От про деякий бібліотечний алґоритм для такої процедури — вичитування і оптимальна організація масиву в пам"яті — я й запитую.

    Повторюсь — я без проблем можу запрограмувати це самостійно, але шукаю готове рішення, щоб не писати програму, яка вже багатократ написана до мене.

  • Вибір бібліотеки чи бази даних для пошуку — питаю поради

    Виграш від заміни MySQL на sqlite при пошуку по індексу — відсотків 10, як бачу. Теж діло, звісно — може й скористаюсь, як не буде кращих варіянтів. спасибі!

  • Вибір бібліотеки чи бази даних для пошуку — питаю поради

    Ось вся програма в сенсі пошуку
    my $sth_v = $dbh-> prepare («select * from index_v where basis =? »);
    while (my $basis =...) {
    $sth_v-> execute ($basis);
    while (my $o = $sth_v-> fetchrow_arrayref) {
    # обробка знайденого;
    } }
    Структура таблиці:
    basis char (30) not null
    g0 char (5) not null
    g1 char (5) not null
    l0 tinyint (4)
    f0 char (5) not null
    На таблиці один індекс — по полю basis

    Значення basis при виконанні програми йдуть в абсолютно випадковому порядку (я схильний думати, що цей фактор не оптимізується), їх кількість — декілька мільйонів за раз, скажімо. Мова йде, властиво, про послівну індексацію значного корпусу документів.

    Відповідно, все що треба — максимальна швидкість запитів. Нюанси оптимізації алґоритмів самого пошуку я би не хотів обговорювати, оскільки не хочу в тисячу перший раз програмувати ці алґоритми — шукаю, навпаки, бібліотеку, де коди пошукових алґоритмів (наприклад, «префіксне дерево» — ru.wikipedia.org/...фиксное_дерево вже вилизані належним чином і нормально працюють.