Очевидно, що найважчу (набагато, набагато, дуже набагато важчу) частину роботи було зроблено деякий час тому, коли чудові люди з Кельнського університету в Німеччині оцифрували й опублікували Кельнські цифрові словники санскриту. Вони навіть виклали всі 36 чи більше словників онлайн, щоб будь-хто міг ними користуватися (до того ж у різних форматах).

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

Було зрозуміло, що вдосконалення інтерфейсу принесе велику користь дослідникам і студентам, і я хотів зробити кілька покращень:

  • Дозволити користувачам вводити текст за допомогою IAST (латинської транскрипції) або деванагарі, адже програма сама здатна їх розрізнити
  • Уможливити пошук у будь-якій кількості словників одночасно
  • Додати нечіткий пошук (щоб можна було знаходити приблизні збіги та схожі слова)
  • Додати повнотекстовий пошук за статтями (а не лише за словами), фактично створивши найбільший двосторонній словник

Коротше кажучи, я нарешті це зробив і запустив sanskrit.myke.blog з усім переліченим вище. Сподіваюся, вам сподобається ним користуватися!

Трохи технічних подробиць для ґіків

Коли я раніше створював версію з графічним інтерфейсом, то написав мігратор, який переніс усі статті в базу даних SQLite, що постачалася разом зі словником. Здавалося, це має сенс і з погляду швидкодії, і з погляду зручності пошуку. Отримана програма не повільна, але й не надто швидка. Мені це не подобалося.

Цього разу я ще трохи подумав, і з’явилася цілком очевидна ідея: база даних потрібна лише тоді, коли збираєшся в неї записувати. Словник цим не займається, він читає, тож якщо я хотів зробити його швидким, мені потрібна була лише добра структура даних, яка перебуває в оперативній пам’яті й чекає на запити читання.

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