Я провожу некоторые лингвистические исследования, которые зависят от возможности запросить корпус из 100 миллионов предложений. Информация, которая мне нужна из этого корпуса, выглядит следующим образом: во скольких предложениях в качестве первого слова было указано «Джон», в качестве второго слова - «пошел», а в качестве пятого слова - «больница» ... и т.д. и не нужно фактически получать предложения.
У меня была идея разбить эти предложения на слова и сохранить их в базе данных, где столбцы будут позициями (word-1, word-2, word-3..etc), а предложения - строк. Так это выглядит:
Word1 Word2 Word3 Word4 Word5 ....
Конгресс одобрил новый законопроект
Джон пошел в школу
.....
И тогда моя цель будет выполнена, вызвав что-то вроде COUNT (SELECT *, где Word1 = Джон и Word4 = школа). Но мне интересно: может ли это быть лучше достигнуто с помощью Lucene (или другого инструмента)?
Программа, которую я пишу (на Java), будет выполнять десятки тысяч таких запросов в этом 100-миллионном корпусе предложений. Так что скорость поиска важна.
Спасибо за любой совет,
Anas