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