как lucene так быстро вычисляет пересечение документов?

Какие внутренние механизмы хранения и поиска позволяют это? Как в мельчайших подробностях?

Например, у меня есть миллион документов, соответствующих термину, и миллион других документов, соответствующих второму члену запроса AND. Как lucene делает пересечение так быстро, давая мне верхний k?

Сохраняет ли он документ в порядке увеличения IDS документа для каждого термина? А затем, когда необходимо пересечь два документа терминов, он ищет первые k общих документов в обоих наборах, последовательно перебирая их оба за один проход.

Или он использует простой неупорядоченный хэш-набор из большего массива документов для поиска общих документов?

Или оба таких (или, возможно, несколько) типов политик пересечения используются в зависимости от количества документов, запрошенных пользователем, совпадающих по отдельным терминам и т. Д. Среди других факторов?

Любые статьи, которые могли бы указать на мельчайшие подробности слияние массива документов будет оценено.

Изменить: Спасибо за информацию, ребята. Теперь это имеет смысл. Пропускные списки творит чудеса. Я углублюсь в это подробнее, чтобы лучше понять.

11
задан Guy Sensei 23 October 2011 в 08:55
поделиться