[ 
https://issues.apache.org/jira/browse/LUCENE-10397?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17533596#comment-17533596
 ] 

Lu Xugang commented on LUCENE-10397:
------------------------------------

[~sokolov], I tried this issue in Lucene 9.0.0 which 
[LUCENE-10384|https://issues.apache.org/jira/browse/LUCENE-10384] haven not 
been presented. it still produce the same issue.

I think it is caused by the sortable long,  when reverse was true then lower 
score and lower node was better, and when reverse was false then higher score 
and higher node was better.

That is why only VectorSimilarityFunction.EUCLIDEAN worked well because its 
reverse was true.

> KnnVectorQuery doesn't tie break by doc ID
> ------------------------------------------
>
>                 Key: LUCENE-10397
>                 URL: https://issues.apache.org/jira/browse/LUCENE-10397
>             Project: Lucene - Core
>          Issue Type: Bug
>            Reporter: Adrien Grand
>            Priority: Minor
>          Time Spent: 10m
>  Remaining Estimate: 0h
>
> I was expecting KnnVectorQUery to tie-break by doc ID so that if multiple 
> documents get the same score then the ones that have the lowest doc ID would 
> get returned first, similarly to how SortField.SCORE also tie-breaks by doc 
> ID.
> However the following test fails, suggesting that it is not the case.
> {code:java}
>   public void testTieBreak() throws IOException {
>     try (Directory d = newDirectory()) {
>       try (IndexWriter w = new IndexWriter(d, new IndexWriterConfig())) {
>         for (int j = 0; j < 5; j++) {
>           Document doc = new Document();
>           doc.add(
>               new KnnVectorField("field", new float[] {0, 1}, 
> VectorSimilarityFunction.DOT_PRODUCT));
>           w.addDocument(doc);
>         }
>       }
>       try (IndexReader reader = DirectoryReader.open(d)) {
>         assertEquals(1, reader.leaves().size());
>         IndexSearcher searcher = new IndexSearcher(reader);
>         KnnVectorQuery query = new KnnVectorQuery("field", new float[] {2, 
> 3}, 3);
>         TopDocs topHits = searcher.search(query, 3);
>         assertEquals(0, topHits.scoreDocs[0].doc);
>         assertEquals(1, topHits.scoreDocs[1].doc);
>         assertEquals(2, topHits.scoreDocs[2].doc);
>       }
>     }
>   }
> {code}



--
This message was sent by Atlassian Jira
(v8.20.7#820007)

---------------------------------------------------------------------
To unsubscribe, e-mail: issues-unsubscr...@lucene.apache.org
For additional commands, e-mail: issues-h...@lucene.apache.org

Reply via email to