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