From e1f735e8810fd4324f095f81644cde32cdf57205 Mon Sep 17 00:00:00 2001 From: Vincent Date: Mon, 3 Feb 2025 11:39:39 -0500 Subject: [PATCH] Fix failure in test from #2708 (#2709) --- .../io/anserini/server/SearchService.java | 22 +++++++++++++++---- 1 file changed, 18 insertions(+), 4 deletions(-) diff --git a/src/main/java/io/anserini/server/SearchService.java b/src/main/java/io/anserini/server/SearchService.java index c8a2062ad..3c43633de 100644 --- a/src/main/java/io/anserini/server/SearchService.java +++ b/src/main/java/io/anserini/server/SearchService.java @@ -26,6 +26,8 @@ import com.fasterxml.jackson.databind.JsonNode; import com.fasterxml.jackson.databind.ObjectMapper; +import org.apache.lucene.document.Document; + import java.util.ArrayList; import java.util.LinkedHashMap; import java.util.List; @@ -116,7 +118,12 @@ public List> search(String query, int hits, public Map getDocument(String docid) { if (!isHnswIndex) throw new IllegalArgumentException("getDocument is only supported for HNSW indexes"); try (SimpleSearcher searcher = new SimpleSearcher(indexDir)) { - String raw = searcher.doc(docid).get(Constants.RAW); + Document lucene_document = searcher.doc(docid); + if (lucene_document == null) { + return Map.of("error", "Document not found: " + docid); + } + + String raw = lucene_document.get(Constants.RAW); Map candidate = new LinkedHashMap<>(); if (raw != null) { JsonNode rootNode = mapper.readTree(raw); @@ -131,7 +138,7 @@ public Map getDocument(String docid) { return candidate; } catch (Exception e) { e.printStackTrace(); - return Map.of(); + return Map.of("error", "Error retrieving document: " + e.getMessage()); } } @@ -151,8 +158,15 @@ public void setEfSearchOverride(String value) { if (value == null || value.trim().isEmpty()) { throw new IllegalArgumentException("efSearch cannot be empty"); } - validateSettings(Integer.parseInt(value), getEncoderOverride(), getQueryGeneratorOverride()); - indexOverrides.put("efSearch", Integer.parseInt(value)); + + int efSearch; + try { + efSearch = Integer.parseInt(value.trim()); + } catch (NumberFormatException e) { + throw new IllegalArgumentException("efSearch must be a valid integer, but got: " + value); + } + validateSettings(efSearch, getEncoderOverride(), getQueryGeneratorOverride()); + indexOverrides.put("efSearch", efSearch); } public void setEncoderOverride(String value) {