/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /** * Search Quality Benchmarking. * <p> * This package allows to benchmark search quality of a Lucene application. * <p> * In order to use this package you should provide: * <ul> * <li>A <a href="{@docRoot}/../core/org/apache/lucene/search/IndexSearcher.html">IndexSearcher</a>.</li> * <li>{@link org.apache.lucene.benchmark.quality.QualityQuery Quality queries}.</li> * <li>{@link org.apache.lucene.benchmark.quality.Judge Judging object}.</li> * <li>{@link org.apache.lucene.benchmark.quality.utils.SubmissionReport Reporting object}.</li> * </ul> * <p> * For benchmarking TREC collections with TREC QRels, take a look at the * {@link org.apache.lucene.benchmark.quality.trec trec package}. * <p> * Here is a sample code used to run the TREC 2006 queries 701-850 on the .Gov2 collection: * * <pre class="prettyprint"> * File topicsFile = new File("topics-701-850.txt"); * File qrelsFile = new File("qrels-701-850.txt"); * IndexReader ir = DirectoryReader.open(directory): * IndexSearcher searcher = new IndexSearcher(ir); * * int maxResults = 1000; * String docNameField = "docname"; * * PrintWriter logger = new PrintWriter(System.out,true); * * // use trec utilities to read trec topics into quality queries * TrecTopicsReader qReader = new TrecTopicsReader(); * QualityQuery qqs[] = qReader.readQueries(new BufferedReader(new FileReader(topicsFile))); * * // prepare judge, with trec utilities that read from a QRels file * Judge judge = new TrecJudge(new BufferedReader(new FileReader(qrelsFile))); * * // validate topics & judgments match each other * judge.validateData(qqs, logger); * * // set the parsing of quality queries into Lucene queries. * QualityQueryParser qqParser = new SimpleQQParser("title", "body"); * * // run the benchmark * QualityBenchmark qrun = new QualityBenchmark(qqs, qqParser, searcher, docNameField); * SubmissionReport submitLog = null; * QualityStats stats[] = qrun.execute(maxResults, judge, submitLog, logger); * * // print an average sum of the results * QualityStats avg = QualityStats.average(stats); * avg.log("SUMMARY",2,logger, " "); * </pre> * * <p> * Some immediate ways to modify this program to your needs are: * <ul> * <li>To run on different formats of queries and judgements provide your own * {@link org.apache.lucene.benchmark.quality.Judge Judge} and * {@link org.apache.lucene.benchmark.quality.QualityQuery Quality queries}.</li> * <li>Create sophisticated Lucene queries by supplying a different * {@link org.apache.lucene.benchmark.quality.QualityQueryParser Quality query parser}.</li> * </ul> */ package org.apache.lucene.benchmark.quality;