Context
Это вопрос в основном о внутренностях Lucene (или, возможно, Solr). Основная тема - фасетный поиск , в котором поиск может происходить по нескольким независимым измерениям (граням) объектов (например, размер, скорость, цена автомобиля).
При реализации с реляционной базой данных для большого числа фасетов многополевые индексы бесполезны, так как фасеты можно искать в любом порядке, поэтому определенный упорядоченный многоиндексный индекс используется с малой вероятностью и при создании всех возможных упорядочений. из индексов невыносимо.
Solr рекламируется для того, чтобы хорошо справляться с граненым заданием поиска, которое, если я считаю правильным, должно быть связано с Lucene (предположительно), хорошо работающим с многопольными запросами (где поля документа связаны с фасетами объекта).
Вопрос
Инвертированный индекс Lucene * может храниться в реляционной базе данных, и, естественно, получение пересечений совпадающих документов также может быть легко достигнуто с помощью RDBMS с использованием индексов одного поля.
Следовательно, в Lucene предположительно имеется несколько продвинутых методов для многополевых запросов, помимо простого пересечения совпадающих документов на основе инвертированного индекса.
Итак, вопрос в том, что это за техника / трюк? В более широком смысле: почему Lucene / Solr теоретически могут добиться более высокой производительности поиска с гранями, чем RDBMS (если да)?
Примечание. Мое первое предположение заключается в том, что Lucene будет использовать некоторый метод разделения пространства для разделения векторного пространства, построенного из полей документа в качестве измерений, но, насколько я понимаю, Lucene не основан исключительно на векторном пространстве.