Я работаю над системой семантического поиска, которая хранит огромное количество данных.Данные на самом деле являются документами и их индексами.Основные проблемы заключаются в том, как индексировать документ с помощью онтологий и как их хранить.
Мой вопрос касается второй проблемы.Сначала я реализовал хранение в RDBMS.Работает очень медленно.Я рассматриваю возможность использования базы данных NoSQL для этой цели, но у меня есть некоторые сомнения.
Обратите внимание, что простой поиск текста с использованием Lucene - это не то, что мне нужно в текущем поле.
Позвольте мне упростить структуру магазина.Обратите внимание, что хранятся только инвертированные индексы.В RDBMS у нас есть таблицы:
1) Word - слова из некоторого словаря
2) Document - документ с метаданными и его содержимым
3) Hit - совпадения слова в документе (все совпадения, разделенные '|')
Чтобы получить результат, система анализирует слова в запросе и рассчитывает релевантность документа на основе информации о слове.Я пропустил некоторые моменты о семантическом анализе, это пока не важно.
Что вы думаете об этой структуре хранения слов?
{
"word": "some_word",
...
"некоторые другие метаданные из словаря"
...
"совпадения": [
"doc1": ["hit_info1", "hit_info2" ...]
"doc2": ["hit_info1", "hit_info2" ...]
]
}
Заранее спасибо!