У меня есть словарь, который состоит из слов и их фонетических транскрипций.
Все слова в нижнем регистре, поэтому поиск не зависит от регистра.
Лексикон действительно огромен, и мне нужно быстро его загрузить, когда моё приложение запускается.
Я предпочел бы прочитать это без необходимости читать каждую запись отдельно.
Я думаю, способ хранения и загрузки также влияет на то, как я храню лексикон в памяти.
Спасибо за любые идеи.
Вы, вероятно, хотите сохранить это как Trie
Это эффективный способ хранения словаря. Посмотрите на следующие ответы для получения дополнительной информации
http://en.wikipedia.org/wiki/Trie
https://stackoverflow.com/questions/296618/what-is-the-most-common-use-of-the-trie-data-structure
На ум приходят несколько вариантов:
mmap
отобразить файл в память, сохранить лексикон, чтобы считывалось только то, к чему осуществляется доступ. Вероятно, это разумно, быстро и надежно, а также проще всего реализовать.mmap
файл сам seek
операции, чтобы переместить указатель файла через файл, не читая все это. Это поможет только в том случае, если лексикон структурирован каким-либо образом, так что вы можете найти правильную позицию, не читая все, т.е. это должна быть структура данных, которая позволяет выполнять поиск лучше, чем O (n) (Trie обычно является хорошим выбором, так как предложенный Salgar).