Commit Graph

37702 Commits

Author SHA1 Message Date
Michael McCandless 250bb03aac Fix 9.12.0 backcompat break (Lucene 9.12.0 cannot read 9.11.x indices written with quantized HNSW, `Lucene99HnswScalarQuantizedVectorsFormat`) (#13874)
* carefully regenerate the int8_hnsw bwc indices so that they do in fact use Lucene99ScalarQuantizedVectorsFormat ... when running TestInt8HnswBackwardsCompatibility it now fails (as expected) on 9.11.0 and 9.11.1 bwc indices, but not on 9.10.0

* rename int8 -> int7 bwc tests since we are actually testing 7 bit quantization

* actually fix the bwc bug: only allow compress=true when bits is 7 or 8 in HNSW scalar quantization

* tidy

* Revert "rename int8 -> int7 bwc tests since we are actually testing 7 bit quantization"

This reverts commit eeb3f8a668.

* Reapply "rename int8 -> int7 bwc tests since we are actually testing 7 bit quantization"

This reverts commit 3487c4210b.

* #13880: add test to verify the int7 quantized indices are in fact using quantized vectors not float32

* bump 9.12.x version to 9.12.1 and add bwc indices for 9.12.0

* remove duplicate 9.12.0 Version constant

* revert changes to index.9.12.0-cfs.zip, index.9.12.0-nocfs.zip, sorted.9.12.0.zip

* remove unused bwc index

Closes #13867
Closes #13880
2024-10-09 19:28:30 -04:00
Adrien Grand a2a751cbac Fix flakiness issues with TestTieredMergePolicy. (#13881)
The two seeds at #13818 had different root causes:
 - The test allows the number of segments to go above the limit, only if none
   of the merges are legal. But there are multiple reasons why a merge may be
   illegal: because it exceeds the max doc count or because it is too imbalanced.
   However these two things were checked independently, so you could run into
   cases when the test would think that there are legal merges from the doc count
   perspective and from the balance perspective, but all legal merges from the doc
   count perspective are illegal from the balance perspective and vice-versa. The
   test now checks that there are merges that are good wrt these two criteria
   at once.
 - `TieredMergePolicy` allows at least `targetSearchConcurrency` segments in an
   index. There was a bug in `TieredMergePolicy` where this condition is
   applied after "too big" segments have been removed, so it effectively allowed
   more segments than necessary in the index.

Closes #13818
2024-10-09 17:29:13 +02:00
Adrien Grand b6512a4680 Disable CFS in TestDefaultCodecParallelizesIO. (#13875)
`SerialIODirectory` doesn't count reads to files that are open with
`ReadAdvice#RANDOM_PRELOAD` as these files are expected to be loaded in memory.
Unfortunately, we cannot detect such files on compound segments, so this test
now disables compound segments.

Closes #13854
2024-10-09 16:25:16 +02:00
Adrien Grand dfa77b931c Reuse Impacts instances across invocations. (#13878)
Our `ImpactsEnum` currently return a new object on every call to
`getImpacts()`, which shows up in nightly profiles.
2024-10-09 16:25:16 +02:00
Mayya Sharipova fb3065b4a6
Allow open-ended ranges in Intervals range (#13873)
Currently IntervalsSource.range function closed intervals.
This will allow open-ended ranges

Relates to #13562
2024-10-09 08:05:49 -04:00
Dawid Weiss ac91b32a26 Adds changes entry and migration comments #13820. 2024-10-09 11:48:54 +02:00
Luca Cavanna 767021e3a0 Move changes entry for #13845 to 10.0.0 2024-10-09 11:38:51 +02:00
Zhang Chao 56c9d1cbeb Move DataInput.readGroupVInts into GroupVIntUtil (#13830) 2024-10-09 09:38:50 +02:00
Armin Braun c85458887c Reduce allocations in ByteBuffersDataOutput.writeString (#13863)
There's no need to allocate a byte array when serializing to heap
buffers and the string fits the remaining capacity without further bounds checks.
If it doesn't fit we could technically do better than the current
`writeLongString` and avoid one round of copying by chunking the string
but that might not be worth the complexity.
In either case we can calculate the utf8 length up-front.
While this costs extra cycles (in the small case) for iterating the string twice it saves
creating an oftentimes 3x oversized byte array, a `BytesRef`, field
reads from the `BytesRef`, copying from it to the buffer and the associated GC with cleaning it up.
Theory and some quick benchmarking suggests this version is likely faster for any string
length than the existing code.
2024-10-09 09:09:36 +02:00
Armin Braun 801c71d1ff Speedup OrderedIntervalsSource (#13871)
Looking up the same indices out of a list is very costly, also better
keep things in local variables (likely registers) where possible.
2024-10-08 19:08:41 +02:00
Armin Braun ee70793fa8 Misc cleanups postings codec (#13862)
Removing some obvious dead code, turning some fields into locals that don't need to be fields, making things static and deduplicating duplicate "scratch" field.
2024-10-08 19:04:14 +02:00
Armin Braun 7c6237a912 Make MaxScoreAccumulator use primitive long instead Object return (#13866)
An object return inside hot code like this is needlessly wasteful.
Escape analysis doesn't catch this one and we end up allocating many GB
of throwaway objects during benchmark runs. We might as well use two
utility methods and accumulate the raw value.
2024-10-08 12:50:44 +02:00
Armin Braun 22638ec8a2 Reduce TaskExecutor overhead (#13861)
The `TaskGroup` class is redundant, the futures list can be a local variable
shared by the tasks (this also removes any need for making it read-only).
2024-10-08 11:07:40 +02:00
Zhang Chao e10e9d136d Reduce long[] array allocation for bitset in readBitSetIterator (#13828) 2024-10-08 10:25:07 +08:00
Armin Braun 6a2d5354a5 Speedup MaxScoreCache.computeMaxScore (#13865)
This shows up as allocating tens of GB for iterators in the nightly
benchmarks. We should go the zero-allocation route for RandomAccess
lists, which I'd expect 100% of them will be here for a bit of a speedup.
2024-10-07 14:40:10 +02:00
Uwe Schindler 17cbb985a1 Upgrade forbiddenapis to version 3.8 2024-10-07 12:26:17 +02:00
Christine Poerschke cbd8b5218a PR 13757 follow-up: add missing with-discountOverlaps Similarity constructor variants, CHANGES.txt entries (#13845)
(cherry picked from commit dab731175c)
2024-10-04 17:23:57 +01:00
Chris Hegarty 69dcf5823d Replace branch_9x references with branch_10x in workflows (#13855)
With the move of the main branch to 11, and the upcoming sunsetting of 9x, we need to replace branch_9x references with branch_10x in workflows.
2024-10-04 13:52:45 +01:00
정승한(Seunghan Jung)/Search Platform a29d12f417 Fix UnifiedHighlighter DefaultPassageFormatter for non-offset order passages (#13832)
The ellipsis should have been inserted in more scenarios.

(cherry picked from commit e3e3328a55)
2024-10-03 21:17:46 -04:00
Michael Sokolov fae57d03ca search on proper level when connecting graph components (#13846) 2024-10-03 14:41:55 +00:00
Michael Sokolov 8c9204d1cc add infostream status messages to HnswGraphBuilder.connectComponents (#13849) 2024-10-03 14:41:55 +00:00
Jim Ferenczi 0f2fac699a Prevent flattening of ordered and unordered interval sources (#13819)
This commit removes the flattening of ordered and unordered interval sources, as it alters the gap visibility for parent intervals. For example, ordered("a", ordered("b", "c")) should result in a different gap compared to ordered("a", "b", "c").

Phrase/Block operators will continue to flatten their sub-sources since this does not affect the inner gap (which is always 0 in the case of blocks).
2024-10-03 12:23:53 +01:00
Luca Cavanna 3ac1db6470 Adjust command to remove uploaded artifacts upon respin (#13853)
The command to remove uploaded artifacts from svn is missing a dash, hence it
fails as it does not match the name of the artifacts uploaded at the previous steps.
2024-10-03 00:19:29 +02:00
Luca Cavanna b32ccecedf Reassign the knn values iterator in TestSortingCodecReader (#13852) 2024-10-02 23:45:27 +02:00
Luca Cavanna 52cb0413fd Add missing authors in Lucene 10 changelog 2024-10-02 20:48:45 +02:00
Benjamin Trent fe63ccd6f1 Expose more parameters in MultiLeafKnnCollector ctor (#13826)
There is currently no way to configure two parameters for the multi-leaf collector. For expert extensibility, this commit adds another ctor for advance usage:

closes: #13699
2024-10-02 13:59:00 -04:00
Chris Hegarty ab1b0b716e Add test for float vector values in FlatVectorsScorer impls (#13851)
This is a test only change that verifies the behaviour when float vector values are passed to our FlatVectorsScorer implementations. This would have caught the bug causing #13844, subsequently fixed by #13850.
2024-10-02 16:06:25 +01:00
Benjamin Trent 19ae89be1b Fix bug where off-heap scorer would kick on even for float vectors (#13850)
introduced in the major refactor #13779

Off-heap scoring is only present for byte[] vectors, and it isn't enough to verify that the vector provider also satisfies the HasIndexSlice interface. The vectors need to be byte vectors otherwise, the slice iterations and scoring are completely nonsensical leading to HNSW graph building to run until the heat-death of the universe.
2024-10-02 09:28:23 -04:00
Luca Cavanna 92444bfa37 Release wizard to split clean and check calls to separate calls (#13843)
While preparing Lucene 10 RC1, I had an issue running the release script from branch_10_0. It reproduces on branch_10x as well. The ./gradle clean check command fails with the following gradle error and some huge tasks dependency output:

Unable to make progress running work. There are items queued for execution but none of them can be started

I worked around this by splitting the clean and check into two separate calls, in which case everything works fine.am making this change at least until we have figured out what causes the issue and we have a fix.
2024-10-01 18:47:02 +02:00
Benjamin Trent bfa6316b02 Fix simple text byte vector iteration (#13842) 2024-10-01 09:37:50 -04:00
Chris Hegarty 87877e1524
Override iterator in Empty off heap vector values (#13837)
This commit override the iterator method in the empty off-heap vector values. The implementation is just the dense iterator, which handles empty values just fine. We use it elsewhere for similar too.
2024-10-01 10:32:38 +01:00
Adrien Grand 9354aa104b Bump the codec version to 10.0. (#13815)
Bump the codec version to 10.0.

Lucene100Codec is the exact same file format as Lucene912Codec. This codec
dance just makes things slightly easier to reason about since our backward
compatibility guarantees are aligned with major version: once we drop support
for 9.x indices, we can remove all `Lucene9XXCodec`s.
2024-10-01 08:58:56 +01:00
Armin Braun 053ebf9eb2 Speedup GlobalHitsThresholdChecker a little (#13836)
Even though this field is not `volatile`, writing it isn't free and
causes needless cache thrashing at some frequency. We can speed things
up by only writing the `true` value and never the `false` value.
2024-10-01 04:16:13 +02:00
Uwe Schindler c991212da0 Add changes entries for CVE-2024-45772 and related commits 2024-09-30 17:29:01 +02:00
ChrisHegarty 5ce9f6edca Add next minor version 10.1.0 2024-09-30 11:33:16 +01:00
ChrisHegarty 22ac47c07a Fix bwc tests by adding next minor version - even though there will never be a 9.13.0 2024-09-29 20:27:06 +01:00
zhouhui 7eea8fbd0d
Fix comment on compare suffix and target. (#13787) 2024-09-29 11:12:32 -04:00
Michael Sokolov 0a8604d908 Merge remote-tracking branch 'origin/main' into main 2024-09-28 17:45:05 -04:00
Michael Sokolov c8eeacb39a fix safety check in KnnVectorsWriter 2024-09-28 17:44:33 -04:00
Michael Sokolov f21ec8414c SlowCompositeCodecReaderWrapper KnnVectorValues handles binary search over array with repeated values 2024-09-28 17:43:01 -04:00
ChrisHegarty a38443bc6a Add back-compat indices for 9.12.0 2024-09-28 21:47:03 +01:00
ChrisHegarty dafe006652 DOAP changes for release 9.12.0 2024-09-28 21:14:49 +01:00
Michael Sokolov 6053e1e313
First-class random access API for KnnVectorValues (#13779) 2024-09-28 09:14:01 -04:00
ChrisHegarty 7b4b0238d7 Fix back compat 11.8.4 indices in main 2024-09-26 14:54:17 +01:00
ChrisHegarty ff57fa7b42 Add RDF entries for 8.11.4 2024-09-25 16:35:24 +01:00
Chris Hegarty 64371c14d6
Add 8.11.4 backward compat indices (#13824)
This commit add 8.11.4 back compat indices.
2024-09-25 16:20:54 +01:00
ChrisHegarty 53d1c2bd2f Test fix: make float vector dims even for SQ testing 2024-09-20 15:28:54 +01:00
Adrien Grand 73d71acedd Also fix formats that are only tested nightly. 2024-09-20 15:24:04 +02:00
Adrien Grand da1f954601
Improve testing of mismatched field numbers. (#13812)
This improves testing of mismatched field numbers by
 - improving `AssertingDocValuesProducer` to detect mismatched field numbers,
 - introducing a `MismatchedCodecReader` to actually test mismatched field
   numbers on `DocValuesProducer` (a `MismatchedLeafReader` wrapping a
`SlowCodecReaderWrapper` doesn't work since `SlowCodecReaderWrapper` implicitly
resolves the correct `FieldInfo` object),
 - introducing an explicit test for mismatched field numbers for doc values, points,
postings and knn vectors.

These new tests uncovered a bug when merging sorted doc values, which would
call the underlying doc values producer with the merged field info.

Closes #13805
2024-09-20 14:37:45 +02:00
Chris Hegarty 7ef7122eba
Revert "Replace Map<String,Object> with IntObjectHashMap for DV producer (#13686) (#13810)
Reverts "Replace Map<String,Object> with IntObjectHashMap for DV producer (#13686)

relates #13809
2024-09-20 11:06:43 +01:00