📄 submissionreport.java
字号:
/** * 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. */package org.apache.lucene.benchmark.quality.utils;import java.io.IOException;import java.io.PrintWriter;import java.text.NumberFormat;import org.apache.lucene.benchmark.quality.QualityQuery;import org.apache.lucene.search.ScoreDoc;import org.apache.lucene.search.Searcher;import org.apache.lucene.search.TopDocs;/** * Create a log ready for submission. * Extend this class and override * {@link #report(QualityQuery, TopDocs, String, Searcher)} * to create different reports. */public class SubmissionReport { private NumberFormat nf; private PrintWriter logger; private String name; /** * Constructor for SubmissionReport. * @param logger if null, no submission data is created. * @param name name of this run. */ public SubmissionReport (PrintWriter logger, String name) { this.logger = logger; this.name = name; nf = NumberFormat.getInstance(); nf.setMaximumFractionDigits(4); nf.setMinimumFractionDigits(4); } /** * Report a search result for a certain quality query. * @param qq quality query for which the results are reported. * @param td search results for the query. * @param docNameField stored field used for fetching the result doc name. * @param searcher index access for fetching doc name. * @throws IOException in case of a problem. */ public void report(QualityQuery qq, TopDocs td, String docNameField, Searcher searcher) throws IOException { if (logger==null) { return; } ScoreDoc sd[] = td.scoreDocs; String sep = " \t "; DocNameExtractor xt = new DocNameExtractor(docNameField); for (int i=0; i<sd.length; i++) { String docName = xt.docName(searcher,sd[i].doc); logger.println( qq.getQueryID() + sep + "Q0" + sep + format(docName,20) + sep + format(""+i,7) + sep + nf.format(sd[i].score) + sep + name ); } } public void flush() { if (logger!=null) { logger.flush(); } } private static String padd = " "; private String format(String s, int minLen) { s = (s==null ? "" : s); int n = Math.max(minLen,s.length()); return (s+padd).substring(0,n); }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -