Package it.unibz.instasearch.indexing.querying

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

/*
* 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.HashMap;

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

/**
* Converts field aliases to actual field names
*/
public class FieldAliasConverter extends QueryVisitor {

  private static HashMap<String, Field> aliases = new HashMap<String, Field>();

  static {
    aliases.put("project",     Field.PROJ);
    aliases.put("filetype",    Field.EXT);
    aliases.put("type",     Field.EXT);
    aliases.put("workingset",  Field.WS);
    aliases.put("age",      Field.MODIFIED);
    aliases.put("folder",    Field.DIR);
  }
 
  /**
   *
   */
  public FieldAliasConverter() {
  }
 
  @Override
  public Query visit(TermQuery termQuery, Field termField) {
   
    Term t = termQuery.getTerm();
   
    if( termField == null && aliases.containsKey(t.field()) ) {
      Field field = aliases.get(t.field());
      Term newTerm = field.createTerm(t.text());
      TermQuery newTermQuery = new TermQuery(newTerm);
      return newTermQuery;
    }
   
    return super.visit(termQuery, termField);
  }
 
  @Override
  public Query visit(PrefixQuery prefixQuery, Field termField) {
   
    Term t = prefixQuery.getPrefix();
   
    if( termField == null && aliases.containsKey(t.field()) ) {
      Field field = aliases.get(t.field());
      Term newTerm = field.createTerm(t.text());
      PrefixQuery newTermQuery = new PrefixQuery(newTerm);
      return newTermQuery;
    }
   
    return super.visit(prefixQuery, termField);
  }
 
  @Override
  public Query visit(WildcardQuery wildcardQuery, Field termField) {
   
    Term t = wildcardQuery.getTerm();
   
    if( termField == null && aliases.containsKey(t.field()) ) {
      Field field = aliases.get(t.field());
      Term newTerm = field.createTerm(t.text());
      WildcardQuery newTermQuery = new WildcardQuery(newTerm);
      return newTermQuery;
    }
   
    return super.visit(wildcardQuery, termField);
  }
}
TOP

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

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.