/* * 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. */ using System; using Document = Lucene.Net.Documents.Document; namespace Lucene.Net.Search { /// Wrapper used by {@link HitIterator} to provide a lazily loaded hit /// from {@link Hits}. /// /// /// Jeremy Rayner /// [Serializable] public class Hit { private Document doc = null; private bool resolved = false; private Hits hits = null; private int hitNumber; /// Constructed from {@link HitIterator} /// Hits returned from a search /// /// Hit index in Hits /// internal Hit(Hits hits, int hitNumber) { this.hits = hits; this.hitNumber = hitNumber; } /// Returns document for this hit. /// /// /// /// public virtual Document GetDocument() { if (!resolved) FetchTheHit(); return doc; } /// Returns score for this hit. /// /// /// /// public virtual float GetScore() { return hits.Score(hitNumber); } /// Returns id for this hit. /// /// /// /// public virtual int GetId() { return hits.Id(hitNumber); } private void FetchTheHit() { doc = hits.Doc(hitNumber); resolved = true; } // provide some of the Document style interface (the simple stuff) /// Returns the boost factor for this hit on any field of the underlying document. /// /// /// /// public virtual float GetBoost() { return GetDocument().GetBoost(); } /// Returns the string value of the field with the given name if any exist in /// this document, or null. If multiple fields exist with this name, this /// method returns the first value added. If only binary fields with this name /// exist, returns null. /// /// /// /// public virtual System.String Get(System.String name) { return GetDocument().Get(name); } /// Prints the parameters to be used to discover the promised result. public override System.String ToString() { System.Text.StringBuilder buffer = new System.Text.StringBuilder(); buffer.Append("Hit<"); buffer.Append(hits.ToString()); buffer.Append(" ["); buffer.Append(hitNumber); buffer.Append("] "); if (resolved) { buffer.Append("resolved"); } else { buffer.Append("unresolved"); } buffer.Append(">"); return buffer.ToString(); } } }