All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.browseengine.bobo.query.ScoreAdjusterQuery Maven / Gradle / Ivy

There is a newer version: 3.1.2
Show newest version
/**
 * This software is licensed to you under the Apache License, Version 2.0 (the
 * "Apache License").
 *
 * LinkedIn's contributions are made under the Apache License. If you contribute
 * to the Software, the contributions will be deemed to have been made under the
 * Apache License, unless you expressly indicate otherwise. Please do not make any
 * contributions that would be inconsistent with the Apache License.
 *
 * You may obtain a copy of the Apache License at http://www.apache.org/licenses/LICENSE-2.0
 * Unless required by applicable law or agreed to in writing, this software
 * distributed under the Apache License is distributed on an "AS IS" BASIS, WITHOUT
 * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the Apache
 * License for the specific language governing permissions and limitations for the
 * software governed under the Apache License.
 *
 * © 2012 LinkedIn Corp. All Rights Reserved.  
 */

package com.browseengine.bobo.query;

import java.io.IOException;
import java.util.Set;

import org.apache.lucene.index.IndexReader;
import org.apache.lucene.search.Explanation;
import org.apache.lucene.search.Query;
import org.apache.lucene.search.Scorer;
import org.apache.lucene.search.Searcher;
import org.apache.lucene.search.Weight;

public class ScoreAdjusterQuery extends Query
{
  private static final long serialVersionUID = 1L;
 
  private class ScoreAdjusterWeight extends Weight
  {
    private static final long serialVersionUID = 1L;
    
    Weight _innerWeight;

    public ScoreAdjusterWeight(Weight innerWeight) throws IOException
    {
      _innerWeight = innerWeight;
    }

    public String toString()
    {
      return "weight(" + ScoreAdjusterQuery.this + ")";
    }

    public Query getQuery()
    {
      return _innerWeight.getQuery();
    }

    public float getValue()
    {
      return _innerWeight.getValue();
    }

    public float sumOfSquaredWeights() throws IOException
    {
      return _innerWeight.sumOfSquaredWeights();
    }

    public void normalize(float queryNorm)
    {
      _innerWeight.normalize(queryNorm);
    }

    @Override
    public Scorer scorer(IndexReader reader, boolean scoreDocsInOrder, boolean topScorer) throws IOException
    {
      Scorer innerScorer = _innerWeight.scorer(reader, scoreDocsInOrder, topScorer);
      return _scorerBuilder.createScorer(innerScorer, reader, scoreDocsInOrder, topScorer);
    }

    public Explanation explain(IndexReader reader, int doc) throws IOException
    {
      Explanation innerExplain = _innerWeight.explain(reader, doc);
      return _scorerBuilder.explain(reader, doc,innerExplain);
    }
  }

  protected final Query _query;
  protected final ScorerBuilder _scorerBuilder;
  public ScoreAdjusterQuery(Query query,ScorerBuilder scorerBuilder)
  {
    _query = query;
    _scorerBuilder = scorerBuilder;
  }
  
  
  
  @Override
  public void extractTerms(Set terms) {
	_query.extractTerms(terms);
  }



@Override
  public Weight createWeight(Searcher searcher) throws IOException
  {
    return new ScoreAdjusterWeight(_query.createWeight(searcher));
  }

  @Override
  public Query rewrite(IndexReader reader) throws IOException
  {
    _query.rewrite(reader);
    return this;
  }
  
  @Override
  public String toString(String field)
  {
    return _query.toString(field);
  }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy