У меня большая база данных (~ 2 ТБ в необработанном несжатом тексте) N-грамм .Пример строки из 4 грамма выглядит следующим образом:
cat in the cradle 2
cat in the hat 187
cat in the window 32
т.е. текст из 4 строк с одним (возможно большим) целым числом (w1,w2,w3,w4,c)
.Мне удалось поместить данные в базу данных с индексацией на [w1,w2,w3]
.Поиск, где первые слова соответствуют заданному запросу, а последнее является диким:
SELECT * FROM db WHERE (w1="cat" AND w2="in" AND w3="the")
, выполняются довольно быстро.Меня интересует как этот запрос, так и тот, в котором первое слово является диким:
SELECT * FROM db WHERE (w2="in" AND w3="the" AND w4="hat")
Независимо от того, как я, кажется, создаю индекс или базу данных, запрос медленный или размер базы данных увеличивается до чего-то экстремального.Кроме того, создание индекса занимает несколько дней на моем компьютере, поэтому экспериментирование идет медленно.Я ищу предложения о том, как управлять таким запросом.Я не думаю, что у меня достаточно места на жестком диске для построения индекса для [w1,w2,w3]
и [w2,w3,w4]
, поэтому любой ответ должен пытаться вписаться в эти ограничения.