blob: 3206ab0d7bc9869581c80a761331ad518ef2b0de [file] [log] [blame]
<!DOCTYPE html>
<!--[if IE]><![endif]-->
<html>
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<title>Namespace Lucene.Net.Benchmarks.Quality
| Apache Lucene.NET 4.8.0-beta00013 Documentation </title>
<meta name="viewport" content="width=device-width">
<meta name="title" content="Namespace Lucene.Net.Benchmarks.Quality
| Apache Lucene.NET 4.8.0-beta00013 Documentation ">
<meta name="generator" content="docfx 2.56.2.0">
<link rel="shortcut icon" href="https://lucenenet.apache.org/docs/4.8.0-beta00009/logo/favicon.ico">
<link rel="stylesheet" href="https://lucenenet.apache.org/docs/4.8.0-beta00009/styles/docfx.vendor.css">
<link rel="stylesheet" href="https://lucenenet.apache.org/docs/4.8.0-beta00009/styles/docfx.css">
<link rel="stylesheet" href="https://lucenenet.apache.org/docs/4.8.0-beta00009/styles/main.css">
<meta property="docfx:navrel" content="toc.html">
<meta property="docfx:tocrel" content="benchmark/toc.html">
<meta property="docfx:rel" content="https://lucenenet.apache.org/docs/4.8.0-beta00009/">
</head>
<body data-spy="scroll" data-target="#affix" data-offset="120">
<span id="forkongithub"><a href="https://github.com/apache/lucenenet" target="_blank">Fork me on GitHub</a></span>
<div id="wrapper">
<header>
<nav id="autocollapse" class="navbar ng-scope" role="navigation">
<div class="container">
<div class="navbar-header">
<button type="button" class="navbar-toggle" data-toggle="collapse" data-target="#navbar">
<span class="sr-only">Toggle navigation</span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
<a class="navbar-brand" href="/">
<img id="logo" class="svg" src="https://lucenenet.apache.org/docs/4.8.0-beta00009/logo/lucene-net-color.png" alt="">
</a>
</div>
<div class="collapse navbar-collapse" id="navbar">
<form class="navbar-form navbar-right" role="search" id="search">
<div class="form-group">
<input type="text" class="form-control" id="search-query" placeholder="Search" autocomplete="off">
</div>
</form>
</div>
</div>
</nav>
<div class="subnav navbar navbar-default">
<div class="container hide-when-search">
<ul class="level0 breadcrumb">
<li>
<a href="https://lucenenet.apache.org/docs/4.8.0-beta00009/">API</a>
<span id="breadcrumb">
<ul class="breadcrumb">
<li></li>
</ul>
</span>
</li>
</ul>
</div>
</div>
</header>
<div class="container body-content">
<div id="search-results">
<div class="search-list"></div>
<div class="sr-items">
<p><i class="glyphicon glyphicon-refresh index-loading"></i></p>
</div>
<ul id="pagination"></ul>
</div>
</div>
<div role="main" class="container body-content hide-when-search">
<div class="sidenav hide-when-search">
<a class="btn toc-toggle collapse" data-toggle="collapse" href="#sidetoggle" aria-expanded="false" aria-controls="sidetoggle">Show / Hide Table of Contents</a>
<div class="sidetoggle collapse" id="sidetoggle">
<div id="sidetoc"></div>
</div>
</div>
<div class="article row grid-right">
<div class="col-md-10">
<article class="content wrap" id="_content" data-uid="Lucene.Net.Benchmarks.Quality">
<h1 id="Lucene_Net_Benchmarks_Quality" data-uid="Lucene.Net.Benchmarks.Quality" class="text-break">Namespace Lucene.Net.Benchmarks.Quality
</h1>
<div class="markdown level0 summary"><!--
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.
-->
<h2 id="search-quality-benchmarking">Search Quality Benchmarking.</h2>
<p>This package allows to benchmark search quality of a Lucene application.</p>
<p>In order to use this package you should provide:</p>
<ul>
<li><p>A <a href="{@docRoot}/../core/org/apache/lucene/search/IndexSearcher.html">IndexSearcher</a>.</p>
</li>
<li><p><a href="QualityQuery.html">Quality queries</a>.</p>
</li>
<li><p><a href="Judge.html">Judging object</a>.</p>
</li>
<li><p><a href="utils/SubmissionReport.html">Reporting object</a>.</p>
</li>
</ul>
<p>For benchmarking TREC collections with TREC QRels, take a look at the
<a href="trec/package-summary.html">trec package</a>.</p>
<p>Here is a sample code used to run the TREC 2006 queries 701-850 on the .Gov2 collection:</p>
<pre><code> File topicsFile = new File(&quot;topics-701-850.txt&quot;);
File qrelsFile = new File(&quot;qrels-701-850.txt&quot;);
IndexReader ir = DirectoryReader.open(directory):
IndexSearcher searcher = new IndexSearcher(ir);
int maxResults = 1000;
String docNameField = &quot;docname&quot;;
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 &amp; judgments match each other
judge.validateData(qqs, logger);
// set the parsing of quality queries into Lucene queries.
QualityQueryParser qqParser = new SimpleQQParser(&quot;title&quot;, &quot;body&quot;);
// run the benchmark
QualityBenchmark qrun = new QualityBenchmark(qqs, qqParser, searcher, docNameField);
SubmissionReport submitLog = null;
QualityStats stats[] = qrun.execute(maxResults, judge, submitLog, logger);
// print an avarage sum of the results
QualityStats avg = QualityStats.average(stats);
avg.log(&quot;SUMMARY&quot;,2,logger, &quot; &quot;);
</code></pre><p>Some immediate ways to modify this program to your needs are:</p>
<ul>
<li><p>To run on different formats of queries and judgements provide your own
<a href="Judge.html">Judge</a> and
<a href="QualityQuery.html">Quality queries</a>.</p>
</li>
<li><p>Create sophisticated Lucene queries by supplying a different
<a href="QualityQueryParser.html">Quality query parser</a>.</p>
</li>
</ul>
</div>
<div class="markdown level0 conceptual"></div>
<div class="markdown level0 remarks"></div>
<h3 id="classes">Classes
</h3>
<h4><a class="xref" href="Lucene.Net.Benchmarks.Quality.QualityBenchmark.html">QualityBenchmark</a></h4>
<section><p>Main entry point for running a quality benchmark.
<p>
There are two main configurations for running a quality benchmark:
<ul><li>Against existing judgements.</li><li>For submission (e.g. for a contest).</li></ul>
The first configuration requires a non null <a class="xref" href="Lucene.Net.Benchmarks.Quality.IJudge.html">IJudge</a>.
The second configuration requires a non null <a class="xref" href="Lucene.Net.Benchmarks.Quality.Utils.SubmissionReport.html">SubmissionReport</a>.</p>
</section>
<h4><a class="xref" href="Lucene.Net.Benchmarks.Quality.QualityQuery.html">QualityQuery</a></h4>
<section><p>A QualityQuery has an ID and some name-value pairs.
<p>
The ID allows to map the quality query with its judgements.
<p>
The name-value pairs are used by a
<a class="xref" href="Lucene.Net.Benchmarks.Quality.IQualityQueryParser.html">IQualityQueryParser</a>
to create a Lucene <span class="xref">Lucene.Net.Search.Query</span>.
<p>
It is very likely that name-value-pairs would be mapped into fields in a Lucene query,
but it is up to the QualityQueryParser how to map - e.g. all values in a single field,
or each pair as its own field, etc., - and this of course must match the way the
searched index was constructed.</p>
</section>
<h4><a class="xref" href="Lucene.Net.Benchmarks.Quality.QualityStats.html">QualityStats</a></h4>
<section><p>Results of quality benchmark run for a single query or for a set of queries.</p>
</section>
<h4><a class="xref" href="Lucene.Net.Benchmarks.Quality.QualityStats.RecallPoint.html">QualityStats.RecallPoint</a></h4>
<section><p>A certain rank in which a relevant doc was found.</p>
</section>
<h3 id="interfaces">Interfaces
</h3>
<h4><a class="xref" href="Lucene.Net.Benchmarks.Quality.IJudge.html">IJudge</a></h4>
<section><p>Judge if a document is relevant for a quality query.</p>
</section>
<h4><a class="xref" href="Lucene.Net.Benchmarks.Quality.IQualityQueryParser.html">IQualityQueryParser</a></h4>
<section><p>Parse a <a class="xref" href="Lucene.Net.Benchmarks.Quality.QualityQuery.html">QualityQuery</a> into a Lucene query.</p>
</section>
</article>
</div>
<div class="hidden-sm col-md-2" role="complementary">
<div class="sideaffix">
<div class="contribution">
<ul class="nav">
<li>
<a href="https://github.com/apache/lucenenet/blob/docs/4.8.0-beta00013/src/Lucene.Net.Benchmark/Quality/package.md/#L2" class="contribution-link">Improve this Doc</a>
</li>
</ul>
</div>
<nav class="bs-docs-sidebar hidden-print hidden-xs hidden-sm affix" id="affix">
<!-- <p><a class="back-to-top" href="#top">Back to top</a><p> -->
</nav>
</div>
</div>
</div>
</div>
<footer>
<div class="grad-bottom"></div>
<div class="footer">
<div class="container">
<span class="pull-right">
<a href="#top">Back to top</a>
</span>
Copyright © 2020 The Apache Software Foundation, Licensed under the <a href='http://www.apache.org/licenses/LICENSE-2.0' target='_blank'>Apache License, Version 2.0</a><br> <small>Apache Lucene.Net, Lucene.Net, Apache, the Apache feather logo, and the Apache Lucene.Net project logo are trademarks of The Apache Software Foundation. <br>All other marks mentioned may be trademarks or registered trademarks of their respective owners.</small>
</div>
</div>
</footer>
</div>
<script type="text/javascript" src="https://lucenenet.apache.org/docs/4.8.0-beta00009/styles/docfx.vendor.js"></script>
<script type="text/javascript" src="https://lucenenet.apache.org/docs/4.8.0-beta00009/styles/docfx.js"></script>
<script type="text/javascript" src="https://lucenenet.apache.org/docs/4.8.0-beta00009/styles/main.js"></script>
</body>
</html>