/*
* 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;
using CorruptIndexException = Lucene.Net.Index.CorruptIndexException;
namespace Lucene.Net.Search
{
/// Wrapper used by {@link HitIterator} to provide a lazily loaded hit
/// from {@link Hits}.
///
///
/// Use {@link TopScoreDocCollector} and {@link TopDocs} instead. Hits will be removed in Lucene 3.0.
///
[Obsolete("Use TopScoreDocCollector and TopDocs instead. Hits will be removed in Lucene 3.0.")]
[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.
///
///
///
///
/// CorruptIndexException if the index is corrupt
/// IOException if there is a low-level IO error
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.
///
///
///
///
/// CorruptIndexException if the index is corrupt
/// IOException if there is a low-level IO error
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.
///
///
///
///
/// CorruptIndexException if the index is corrupt
/// IOException if there is a low-level IO error
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();
}
}
}