[Matching Algorithm with Recursively Implemented StorAge]. Utilidades** que sirven para interactuar con la librería libmarisa. Esa librería implementa un trie comprimido y estático, muy usado en búsquedas rápidas de cadenas, diccionarios y autocompletado. Un trie es una estructura de datos tipo árbol diseñada para manejar colecciones de cadenas y marisa es una implementación optimizada de tries muy usado, por ejemplo, en motores de búsqueda, correctores ortográficos, autocompletado y análisis de texto. Incluye las herramientas marisa-benchmark, marisa-build, marisa-common-prefix-search, marisa-dump, marisa-lookup, marisa-predictive-search y marisa-reverse-lookup.
Un ejemplo sería guardar "casa", "caso" y "canto". En un array normal ocuparía memoria redundante, pero en un trie se comparte prefijos con la estructura siguiente:
c
└─ a
└─ s
│ ├─ a
│ └─ o
└─ n
└─ t
└─ o
Así, es mucho más eficiente en memoria y en búsqueda de prefijos.
$ marisa-build ~/dic/words.txt -o ~/dic/words.marisa
$ marisa-dump words.marisa
$ marisa-predictive-search words.marisa
$ marisa-predictive-search words.marisa <<< palabra
$ marisa-lookup words.marisa
$ marisa-lookup dic.marisa <<< palabra
$ marisa-benchmark words.marisa
$ marisa-common-prefix-search