List of usage examples for org.apache.lucene.benchmark.quality.utils SubmissionReport SubmissionReport
public SubmissionReport(PrintWriter logger, String name)
From source file:it.unipd.dei.ims.lucene.clef.applications.BatchRetrieval.java
License:Apache License
public static void main(String[] args) { Properties properties = new Properties(); InputStream input = null;//from w w w . j ava 2 s.c o m try { if (System.getProperty("properties.path") != null) { input = new FileInputStream(System.getProperty("properties.path")); properties.load(input); } else { logger.info("Loading default property file [resources/lucene-clef.properties]"); ClassLoader loader = Thread.currentThread().getContextClassLoader(); input = loader.getResourceAsStream("lucene-clef.properties"); properties.load(input); } } catch (IOException ex) { ex.printStackTrace(); } finally { if (input != null) { try { input.close(); } catch (IOException e) { e.printStackTrace(); } } } properties.putAll(System.getProperties()); Path indexPath = new File(properties.getProperty("index.path")).toPath(); Path runPath = new File(properties.getProperty("run.path")).toPath(); String runTag = properties.getProperty("run.tag"); String language = properties.getProperty("language"); String stemmer = properties.getProperty("stemmer"); String stopsetType = properties.getProperty("stopset.type"); String stopsetPath = properties.getProperty("stopset.path"); try { Directory directory = new SimpleFSDirectory(indexPath); IndexReader reader = DirectoryReader.open(directory); IndexSearcher searcher = new IndexSearcher(reader); String model = properties.getProperty("run.model").toUpperCase(); Similarity similarity; switch (model) { case "BM25": similarity = new BM25Similarity(Float.parseFloat(properties.getProperty("bm25.k1", "1.2f")), Float.parseFloat(properties.getProperty("bm25.b", "0.75f"))); break; default: throw new UnsupportedOperationException("Model " + model + " not supported yet"); } searcher.setSimilarity(similarity); int maxResults = Integer.parseInt(properties.getProperty("maxresults", "1000")); SubmissionReport runfile = new SubmissionReport( new PrintWriter(Files.newBufferedWriter(runPath, StandardCharsets.UTF_8)), model); String topicPath = properties.getProperty("topics.path"); String[] topicFields = properties.getProperty("topics.fields").split(";"); CharArraySet stopset = AnalyzerFactory.createStopset(language, stopsetType, stopsetPath); QualityQuery qqs[] = getQualityQueries(topicPath, topicFields); QualityQueryParser qqParser = new ClefQQParser(topicFields, BuildIndex.BODY_FIELD_NAME, language, stemmer, stopset); // run the benchmark QualityBenchmark qrun = new QualityBenchmark(qqs, qqParser, searcher, BuildIndex.ID_FIELD_NAME); qrun.setMaxResults(maxResults); QualityStats stats[] = qrun.execute(null, runfile, null); reader.close(); directory.close(); } catch (IOException e) { e.printStackTrace(); } catch (Exception e) { e.printStackTrace(); } }