Понимание ведущей подстановочной производительности Lucene

Lucene по умолчанию не допускает использование подстановочных знаков в поисковых запросах,но это можно включить с:

QueryParser#setAllowLeadingWildcard(true)

Я понимаю, что использование лидирующего подстановочного знака не позволяет Lucene использовать индекс. Поиск с использованием подстановочного знака должен сканировать весь индекс.

How do I demonstrate the performance of a leading wildcard query? When is it OK to use setAllowLeadingWildcard(true)?

Я создал тестовый индекс с 10 миллионами документов в форме:

{ name: random_3_word_phrase }

Индекс 360M на диске.

Мои тестовые запросы работают хорошо, и я не смог на самом деле продемонстрировать проблему с производительностью. Например, запрос дляname:*ing производит более 1,1 миллиона документов менее чем за 1 секунду. Запросname:*ing* производит более 1,5 миллионов документов одновременно.

Что здесь происходит? Почему это не так медленно? 10 000 000 документов недостаточно? Должны ли документы содержать больше, чем одно поле?

Ответы на вопрос(2)

Ваш ответ на вопрос