Package it.unibz.instasearch.indexing.querying

Source Code of it.unibz.instasearch.indexing.querying.LowercaseConverter

/*
* Copyright (c) 2009 Andrejs Jermakovics.
*
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
*     Andrejs Jermakovics - initial implementation
*/
package it.unibz.instasearch.indexing.querying;

import it.unibz.instasearch.indexing.Field;

import java.util.Locale;

import org.apache.lucene.index.Term;
import org.apache.lucene.search.PhraseQuery;
import org.apache.lucene.search.PrefixQuery;
import org.apache.lucene.search.Query;
import org.apache.lucene.search.TermQuery;
import org.apache.lucene.search.WildcardQuery;

/**
*
*/
public class LowercaseConverter extends QueryVisitor {


  @Override
  public void init(Query query) {
  }
 
  @Override
  public Query visit(TermQuery termQuery, Field field) {
   
    if( field == Field.CONTENTS  )
    {
      Term term = termQuery.getTerm();
      return new TermQuery(field.createTerm( term.text().toLowerCase(Locale.ENGLISH) ));
    }
     
    return termQuery;
  }
 
  @Override
  public Query visit(PrefixQuery prefixQuery, Field field) {
   
    if( field == Field.CONTENTS  )
    {
      Term term = prefixQuery.getPrefix();
      return new PrefixQuery( field.createTerm( term.text().toLowerCase(Locale.ENGLISH) ) );
    }
   
    return super.visit(prefixQuery, field);
  }
 
  @Override
  public Query visit(WildcardQuery wildcardQuery, Field field) {
    if( field == Field.CONTENTS  )
    {
      Term term = wildcardQuery.getTerm();
      return new WildcardQuery( field.createTerm( term.text().toLowerCase(Locale.ENGLISH) ) );
    }
    return super.visit(wildcardQuery, field);
  }
 
  @Override
  public Query visit(PhraseQuery phraseQuery)
  {
    PhraseQuery newQuery = new PhraseQuery();
   
    for(Term term: phraseQuery.getTerms())
    {
      Field field = Field.getByName( term.field() );
      if( field != Field.CONTENTS )
        return phraseQuery;
     
      Term newTerm = Field.CONTENTS.createTerm( term.text().toLowerCase(Locale.ENGLISH) );
      newQuery.add( newTerm );
    }
   
    newQuery.setSlop(phraseQuery.getSlop());
    newQuery.setBoost( phraseQuery.getBoost() );
   
    return newQuery;
  }
}
TOP

Related Classes of it.unibz.instasearch.indexing.querying.LowercaseConverter

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.