<freeStyleBuild _class='hudson.model.FreeStyleBuild'><action _class='hudson.model.CauseAction'><cause _class='hudson.model.Cause$UpstreamCause'><shortDescription>Started by upstream project "Lucene-main-Windows" build number 19,352</shortDescription><upstreamBuild>19352</upstreamBuild><upstreamProject>Lucene-main-Windows</upstreamProject><upstreamUrl>job/Lucene-main-Windows/</upstreamUrl></cause></action><action></action><action _class='hudson.plugins.git.util.BuildData'><buildsByBranchName><refsremotesoriginbranch_10x _class='hudson.plugins.git.util.Build'><buildNumber>4617</buildNumber><marked><SHA1>ff46d152f7ee5aafda39d32de82aa581eb1b27c9</SHA1><branch><SHA1>ff46d152f7ee5aafda39d32de82aa581eb1b27c9</SHA1><name>refs/remotes/origin/branch_10x</name></branch></marked><revision><SHA1>ff46d152f7ee5aafda39d32de82aa581eb1b27c9</SHA1><branch><SHA1>ff46d152f7ee5aafda39d32de82aa581eb1b27c9</SHA1><name>refs/remotes/origin/branch_10x</name></branch></revision></refsremotesoriginbranch_10x></buildsByBranchName><lastBuiltRevision><SHA1>ff46d152f7ee5aafda39d32de82aa581eb1b27c9</SHA1><branch><SHA1>ff46d152f7ee5aafda39d32de82aa581eb1b27c9</SHA1><name>refs/remotes/origin/branch_10x</name></branch></lastBuiltRevision><remoteUrl>https://gitbox.apache.org/repos/asf/lucene.git</remoteUrl><scmName></scmName></action><action></action><action></action><action _class='hudson.model.ParametersAction'></action><action _class='hudson.tasks.junit.TestResultAction'><failCount>0</failCount><skipCount>1458</skipCount><totalCount>18987</totalCount><urlName>testReport</urlName></action><action></action><action></action><action></action><action _class='org.jenkinsci.plugins.displayurlapi.actions.RunDisplayAction'></action><building>false</building><description>Java: 64bit/hotspot/jdk-22.0.2 -XX:+UseCompressedOops -XX:+UseZGC</description><displayName>#4617</displayName><duration>900573</duration><estimatedDuration>868961</estimatedDuration><fullDisplayName>Lucene-10.x-macOS #4617</fullDisplayName><id>4617</id><inProgress>false</inProgress><keepLog>false</keepLog><number>4617</number><queueId>215802</queueId><result>SUCCESS</result><timestamp>1776771096656</timestamp><url>https://jenkins.thetaphi.de/view/Lucene/job/Lucene-10.x-macOS/4617/</url><builtOn>macOS VM</builtOn><changeSet _class='hudson.plugins.git.GitChangeSetList'><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>lucene/benchmark-jmh/src/java/org/apache/lucene/benchmark/jmh/PhraseScorerBenchmark.java</affectedPath><affectedPath>lucene/core/src/test/org/apache/lucene/search/TestPhraseMatcherContract.java</affectedPath><affectedPath>lucene/CHANGES.txt</affectedPath><affectedPath>lucene/core/src/java/org/apache/lucene/search/PhraseWeight.java</affectedPath><affectedPath>lucene/core/src/java/org/apache/lucene/search/SloppyPhraseMatcher.java</affectedPath><affectedPath>lucene/core/src/java/org/apache/lucene/search/ExactPhraseMatcher.java</affectedPath><affectedPath>lucene/core/src/java/org/apache/lucene/search/PhraseScorer.java</affectedPath><affectedPath>lucene/core/src/java/org/apache/lucene/search/PhrasePositions.java</affectedPath><affectedPath>lucene/core/src/java/org/apache/lucene/search/PhraseMatcher.java</affectedPath><commitId>1400c6eabf10be26d96107161dd24d6f09983fdd</commitId><timestamp>1776762014000</timestamp><author><absoluteUrl>https://jenkins.thetaphi.de/user/romseygeek</absoluteUrl><fullName>romseygeek</fullName></author><authorEmail>romseygeek@apache.org</authorEmail><comment>Optimise phrasescorer matches (#15861)

In TOP_SCORES mode, we can avoid loading position information by
looking at the maxFreq() of a document and skipping it if it isn't
competitive.  This reworks the PhraseScorer implementations to allow
maxFreq() to be called before reset(), and renames reset() to
resetPositions() to make it clear what the methods actually do.
</comment><date>2026-04-21 10:00:14 +0100</date><id>1400c6eabf10be26d96107161dd24d6f09983fdd</id><msg>Optimise phrasescorer matches (#15861)</msg><path><editType>edit</editType><file>lucene/core/src/java/org/apache/lucene/search/ExactPhraseMatcher.java</file></path><path><editType>edit</editType><file>lucene/core/src/java/org/apache/lucene/search/PhraseMatcher.java</file></path><path><editType>add</editType><file>lucene/benchmark-jmh/src/java/org/apache/lucene/benchmark/jmh/PhraseScorerBenchmark.java</file></path><path><editType>add</editType><file>lucene/core/src/test/org/apache/lucene/search/TestPhraseMatcherContract.java</file></path><path><editType>edit</editType><file>lucene/core/src/java/org/apache/lucene/search/PhraseScorer.java</file></path><path><editType>edit</editType><file>lucene/CHANGES.txt</file></path><path><editType>edit</editType><file>lucene/core/src/java/org/apache/lucene/search/PhraseWeight.java</file></path><path><editType>edit</editType><file>lucene/core/src/java/org/apache/lucene/search/SloppyPhraseMatcher.java</file></path><path><editType>edit</editType><file>lucene/core/src/java/org/apache/lucene/search/PhrasePositions.java</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>lucene/core/src/test/org/apache/lucene/index/TestIndexWriter.java</affectedPath><affectedPath>lucene/core/src/java/org/apache/lucene/index/DocumentsWriterPerThread.java</affectedPath><affectedPath>lucene/CHANGES.txt</affectedPath><affectedPath>lucene/core/src/java/org/apache/lucene/index/IndexingChain.java</affectedPath><commitId>ff46d152f7ee5aafda39d32de82aa581eb1b27c9</commitId><timestamp>1776768668000</timestamp><author><absoluteUrl>https://jenkins.thetaphi.de/user/chegar999</absoluteUrl><fullName>chegar999</fullName></author><authorEmail>chegar999@gmail.com</authorEmail><comment>Move parent field from DWPT to IndexingChain (#15960)

The parent field (used for block indexing) was previously managed by
DWPT: it created a ReservedField wrapper, injected the field into the
last document's iterator via addParentField(), and relied on a
delegating ReservedField class to guard the field name from external
use.

Move ownership of the parent field into IndexingChain, where field
schemas and processing already live. The parent field and its PerField
are created once in the IndexingChain constructor, and processDocument
handles it directly in both passes when lastDocInBlock is true.
Reserved field detection uses a simple identity check (pf == parentPf)
instead of the ReservedField wrapper class.

This removes ~90 lines of boilerplate (ReservedField, addParentField
iterator, reserved boolean on PerField) and avoids per-document iterator
allocation and redundant schema re-validation for the parent field.
</comment><date>2026-04-21 11:51:08 +0100</date><id>ff46d152f7ee5aafda39d32de82aa581eb1b27c9</id><msg>Move parent field from DWPT to IndexingChain (#15960)</msg><path><editType>edit</editType><file>lucene/core/src/java/org/apache/lucene/index/DocumentsWriterPerThread.java</file></path><path><editType>edit</editType><file>lucene/core/src/test/org/apache/lucene/index/TestIndexWriter.java</file></path><path><editType>edit</editType><file>lucene/CHANGES.txt</file></path><path><editType>edit</editType><file>lucene/core/src/java/org/apache/lucene/index/IndexingChain.java</file></path></item><kind>git</kind></changeSet><culprit><absoluteUrl>https://jenkins.thetaphi.de/user/romseygeek</absoluteUrl><fullName>romseygeek</fullName></culprit><culprit><absoluteUrl>https://jenkins.thetaphi.de/user/chegar999</absoluteUrl><fullName>chegar999</fullName></culprit></freeStyleBuild>