Что такое внутреннее хранилище и поиск, которые позволяют это? Как в мельчайших песках?
Например, у меня есть миллион документов, совпадающих с термином, и миллион других, совпадающих со вторым термином запроса AND. Как lucene делает пересечение так быстро, давая мне top k?
Хранит ли документ документ в порядке увеличения ID документа для каждого термина? И затем, когда необходимо пересечь документы двух терминов, он ищет первые общие k документов в обоих наборах, перебирая их оба постепенно, за один проход.
Или он использует простой неупорядоченный хэш-набор из массива документов для поиска общих документов?
Или оба таких (или, возможно, более) типа политик пересечения используются в зависимости от количества документов, запрашиваемых пользователем, сопоставляемых отдельными терминами и т. Д. Среди прочих факторов?
Будут оценены любые статьи, которые могут указать на мелочность слияния массивов документов.
Edit:
Спасибо за информацию, ребята. Это имеет смысл сейчас. Пропуск списков делает магию. Я углублюсь в это, чтобы получить ясное понимание.