Сергей Горностаев, а какие преимущества использовать JDK Flight Recorder + JDK Mission Control в этом случае? просто сам обычно использую async profiler из-за простоты работы с ним, интересно в каких ситуациях этого не достаточно
ну это то, как работает обратный индекс. он ничего не знает про позицию слова
На самом деле при построении обратного индекса солр учитывает кол-во вхождений и позиции терминов в документе. Ну и ранжирование по TF-IDF тоже стандартная штука.
Советую почитать про метод computeIfAbsent. Если по переданному ключу ничего не лежит, он добавит по нему значение (в данном случае List) и вернет его. Либо, если переданный ключ есть в мапе, вернет уже существующий List.
Соответственно, в обоих случаях значение будет добавляться в список, а при добавлении в список никаких затираний значений быть не может.
Вопрос звучит так будто на запрос "1 2 3" не должен возвращаться документ, содержащий "3 2 1".
Для этого вроде достаточно использовать кавычки в запросе: text:"1 2 3" вместо text:1 2 3.
Но это так же зависит от используемого парсера.
Bavashi, в любом случае задание подразумевает группировку по длине. Доработать этот код автор может самостоятельно. Странно что решением выбран ответ, имеющий явно большую ассимптотическую сложность