Что такое DocValues ​​в Solr. - PullRequest
0 голосов
/ 14 декабря 2018

Я новичок в Solr.Я читал, что Solr использует инвертированный индекс, который эффективен для быстрых результатов поиска.Но если запрос включает в себя сортировку, огранку, люди рекомендуют использовать значения документов.Поэтому мой вопрос заключается в том, что такое docvalues ​​и почему мы должны использовать в вышеуказанных случаях, а также, как инвертирование индекса неэффективно в вышеуказанных случаях. Пожалуйста, дайте подробное объяснение с примером, если это возможно.

Ответы [ 2 ]

0 голосов
/ 16 декабря 2018

Чтобы завершить ответ Гектора, я бы сказал, что инвертированный индекс эффективен для сопоставления документов по основному поисковому запросу.

Теперь, когда дело доходит до фильтрации / сортировки / выполнения огранки, Solr воздействует на набор результатов, он уже имеет дело со списком совпадающих документов, и любой подзапрос будет пересекаться или объединяться с основным набором результатов.

На данный момент мы можем логически подумать о ситуации с документами к чему-то: например, если бы вы отсортировали произвольный список идентификаторов документов по fieldX , вы бы фактически переупорядочили fieldXзначений и получите соответствующие - отсортированные - docID.

Таким образом, если fieldCache создается с включенным docValues ​​для соответствующих полей, готовность к использованию сопоставления документа со значением значительно улучшит использование fieldCache.

Мы также можем (возможно, несколько неточно) ссылаться на «горячий» кэш или «холодный».

0 голосов
/ 15 декабря 2018

Короткий ответ: DocValues ​​- это оптимизация, помогающая с использованием памяти и производительностью некоторых других функций Solr, которые люди связывают с поиском.

Из руководства Solr :

DocValues ​​- это способ внутренней записи значений полей, который более эффективен для некоторых целей, таких как сортировка и фасетирование, чем традиционное индексирование.

Почему DocValues?

Стандартный способ, которым Solr создает индекс, - это инвертированный индекс.Этот стиль создает список терминов, найденных во всех документах в индексе, и рядом с каждым термином находится список документов, в которых появляется термин (а также сколько раз термин появляется в этом документе).Это делает поиск очень быстрым - поскольку пользователи осуществляют поиск по терминам, наличие готового списка значений терминов в документе делает процесс запроса более быстрым.

Для других функций, которые мы теперь обычно связываем с поиском, таких как сортировка,огранка и выделение, этот подход не очень эффективен.Механизм фасетирования, например, должен искать каждый термин, который появляется в каждом документе, который будет составлять набор результатов, и извлекать идентификаторы документа для построения списка фасетов.В Solr это поддерживается в памяти и может медленно загружаться (в зависимости от количества документов, условий и т. Д.).

В Lucene 4.0 был представлен новый подход.Поля DocValue теперь являются полями, ориентированными на столбцы, с отображением документа на значение, созданным во время индекса.Этот подход обещает облегчить некоторые требования к памяти для fieldCache и значительно ускорить поиск для огранки, сортировки и группировки.

...