org.apache.accumulo.examples.wikisearch.parser
Class RangeCalculator

java.lang.Object
  extended by org.apache.accumulo.examples.wikisearch.parser.QueryParser
      extended by org.apache.accumulo.examples.wikisearch.parser.RangeCalculator
All Implemented Interfaces:
org.apache.commons.jexl2.parser.ParserVisitor

public class RangeCalculator
extends QueryParser

This class is used to query the global indices to determine that set of ranges to use when querying the shard table. The RangeCalculator looks at each term in the query to determine if it is a equivalence, range, or wildcard comparison, and queries the appropriate index to find the ranges for the terms which are then cached. The final set of ranges is computed as the AST is traversed.


Nested Class Summary
static class RangeCalculator.MapKey
          Container used as map keys in this class
static class RangeCalculator.RangeBounds
          Container used to hold the lower and upper bound of a range
protected static class RangeCalculator.TermRange
          Object that is used to hold ranges found in the index.
 
Nested classes/interfaces inherited from class org.apache.accumulo.examples.wikisearch.parser.QueryParser
QueryParser.QueryTerm
 
Field Summary
protected  Authorizations auths
           
protected  Connector c
           
protected  Map<RangeCalculator.MapKey,RangeCalculator.TermRange> globalIndexResults
           
protected  com.google.common.collect.Multimap<String,Normalizer> indexedTerms
           
protected  com.google.common.collect.Multimap<String,String> indexEntries
           
protected  String indexTableName
           
protected  Map<String,String> indexValues
           
protected static org.apache.log4j.Logger log
           
protected  com.google.common.collect.Multimap<String,RangeCalculator.MapKey> originalQueryValues
           
protected  int queryThreads
           
protected  Set<Range> result
           
protected  String reverseIndexTableName
           
protected  Map<String,Long> termCardinalities
           
protected  com.google.common.collect.Multimap<String,QueryParser.QueryTerm> termsCopy
           
 
Fields inherited from class org.apache.accumulo.examples.wikisearch.parser.QueryParser
negatedTerms
 
Constructor Summary
RangeCalculator()
           
 
Method Summary
 void execute(Connector c, Authorizations auths, com.google.common.collect.Multimap<String,Normalizer> indexedTerms, com.google.common.collect.Multimap<String,QueryParser.QueryTerm> terms, String query, AbstractQueryLogic logic, Set<String> typeFilter)
           
 com.google.common.collect.Multimap<String,String> getIndexEntries()
           
 Map<String,String> getIndexValues()
           
 Set<Range> getResult()
           
 Map<String,Long> getTermCardinalities()
           
protected  Map<RangeCalculator.MapKey,RangeCalculator.TermRange> queryGlobalIndex(Map<RangeCalculator.MapKey,Set<Range>> indexRanges, String specificFieldName, String tableName, boolean isReverse, RangeCalculator.MapKey override, Set<String> typeFilter)
           
 Object visit(org.apache.commons.jexl2.parser.ASTAndNode node, Object data)
           
 Object visit(org.apache.commons.jexl2.parser.ASTEQNode node, Object data)
           
 Object visit(org.apache.commons.jexl2.parser.ASTERNode node, Object data)
           
 Object visit(org.apache.commons.jexl2.parser.ASTFalseNode node, Object data)
           
 Object visit(org.apache.commons.jexl2.parser.ASTFunctionNode node, Object data)
           
 Object visit(org.apache.commons.jexl2.parser.ASTGENode node, Object data)
           
 Object visit(org.apache.commons.jexl2.parser.ASTGTNode node, Object data)
           
 Object visit(org.apache.commons.jexl2.parser.ASTLENode node, Object data)
           
 Object visit(org.apache.commons.jexl2.parser.ASTLTNode node, Object data)
           
 Object visit(org.apache.commons.jexl2.parser.ASTNENode node, Object data)
           
 Object visit(org.apache.commons.jexl2.parser.ASTNRNode node, Object data)
           
 Object visit(org.apache.commons.jexl2.parser.ASTNullLiteral node, Object data)
           
 Object visit(org.apache.commons.jexl2.parser.ASTOrNode node, Object data)
           
 Object visit(org.apache.commons.jexl2.parser.ASTTrueNode node, Object data)
           
 
Methods inherited from class org.apache.accumulo.examples.wikisearch.parser.QueryParser
decodeResults, execute, getAndTermsForOptimizer, getAST, getHashValue, getIteratorTree, getNegatedTermsForOptimizer, getOrTermsForOptimizer, getQueryIdentifiers, getQueryLiterals, getQueryTerms, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

log

protected static org.apache.log4j.Logger log

c

protected Connector c

auths

protected Authorizations auths

indexedTerms

protected com.google.common.collect.Multimap<String,Normalizer> indexedTerms

termsCopy

protected com.google.common.collect.Multimap<String,QueryParser.QueryTerm> termsCopy

indexTableName

protected String indexTableName

reverseIndexTableName

protected String reverseIndexTableName

queryThreads

protected int queryThreads

result

protected Set<Range> result

indexEntries

protected com.google.common.collect.Multimap<String,String> indexEntries

indexValues

protected Map<String,String> indexValues

originalQueryValues

protected com.google.common.collect.Multimap<String,RangeCalculator.MapKey> originalQueryValues

termCardinalities

protected Map<String,Long> termCardinalities

globalIndexResults

protected Map<RangeCalculator.MapKey,RangeCalculator.TermRange> globalIndexResults
Constructor Detail

RangeCalculator

public RangeCalculator()
Method Detail

execute

public void execute(Connector c,
                    Authorizations auths,
                    com.google.common.collect.Multimap<String,Normalizer> indexedTerms,
                    com.google.common.collect.Multimap<String,QueryParser.QueryTerm> terms,
                    String query,
                    AbstractQueryLogic logic,
                    Set<String> typeFilter)
             throws org.apache.commons.jexl2.parser.ParseException
Parameters:
c -
auths -
indexedTerms -
terms -
query -
logic -
typeFilter -
Throws:
org.apache.commons.jexl2.parser.ParseException

getResult

public Set<Range> getResult()
Returns:
set of ranges to use for the shard table

getIndexEntries

public com.google.common.collect.Multimap<String,String> getIndexEntries()
Returns:
map of field names to index field values

getIndexValues

public Map<String,String> getIndexValues()

getTermCardinalities

public Map<String,Long> getTermCardinalities()
Returns:
Cardinality for each field name.

queryGlobalIndex

protected Map<RangeCalculator.MapKey,RangeCalculator.TermRange> queryGlobalIndex(Map<RangeCalculator.MapKey,Set<Range>> indexRanges,
                                                                                 String specificFieldName,
                                                                                 String tableName,
                                                                                 boolean isReverse,
                                                                                 RangeCalculator.MapKey override,
                                                                                 Set<String> typeFilter)
                                                                          throws TableNotFoundException
Parameters:
indexRanges -
tableName -
isReverse - switch that determines whether or not to reverse the results
override - mapKey for wildcard and range queries that specify which mapkey to use in the results
typeFilter - - optional list of datatypes
Throws:
TableNotFoundException

visit

public Object visit(org.apache.commons.jexl2.parser.ASTOrNode node,
                    Object data)
Specified by:
visit in interface org.apache.commons.jexl2.parser.ParserVisitor
Overrides:
visit in class QueryParser

visit

public Object visit(org.apache.commons.jexl2.parser.ASTAndNode node,
                    Object data)
Specified by:
visit in interface org.apache.commons.jexl2.parser.ParserVisitor
Overrides:
visit in class QueryParser

visit

public Object visit(org.apache.commons.jexl2.parser.ASTEQNode node,
                    Object data)
Specified by:
visit in interface org.apache.commons.jexl2.parser.ParserVisitor
Overrides:
visit in class QueryParser

visit

public Object visit(org.apache.commons.jexl2.parser.ASTNENode node,
                    Object data)
Specified by:
visit in interface org.apache.commons.jexl2.parser.ParserVisitor
Overrides:
visit in class QueryParser

visit

public Object visit(org.apache.commons.jexl2.parser.ASTLTNode node,
                    Object data)
Specified by:
visit in interface org.apache.commons.jexl2.parser.ParserVisitor
Overrides:
visit in class QueryParser

visit

public Object visit(org.apache.commons.jexl2.parser.ASTGTNode node,
                    Object data)
Specified by:
visit in interface org.apache.commons.jexl2.parser.ParserVisitor
Overrides:
visit in class QueryParser

visit

public Object visit(org.apache.commons.jexl2.parser.ASTLENode node,
                    Object data)
Specified by:
visit in interface org.apache.commons.jexl2.parser.ParserVisitor
Overrides:
visit in class QueryParser

visit

public Object visit(org.apache.commons.jexl2.parser.ASTGENode node,
                    Object data)
Specified by:
visit in interface org.apache.commons.jexl2.parser.ParserVisitor
Overrides:
visit in class QueryParser

visit

public Object visit(org.apache.commons.jexl2.parser.ASTERNode node,
                    Object data)
Specified by:
visit in interface org.apache.commons.jexl2.parser.ParserVisitor
Overrides:
visit in class QueryParser

visit

public Object visit(org.apache.commons.jexl2.parser.ASTNRNode node,
                    Object data)
Specified by:
visit in interface org.apache.commons.jexl2.parser.ParserVisitor
Overrides:
visit in class QueryParser

visit

public Object visit(org.apache.commons.jexl2.parser.ASTNullLiteral node,
                    Object data)
Specified by:
visit in interface org.apache.commons.jexl2.parser.ParserVisitor
Overrides:
visit in class QueryParser

visit

public Object visit(org.apache.commons.jexl2.parser.ASTTrueNode node,
                    Object data)
Specified by:
visit in interface org.apache.commons.jexl2.parser.ParserVisitor
Overrides:
visit in class QueryParser

visit

public Object visit(org.apache.commons.jexl2.parser.ASTFalseNode node,
                    Object data)
Specified by:
visit in interface org.apache.commons.jexl2.parser.ParserVisitor
Overrides:
visit in class QueryParser

visit

public Object visit(org.apache.commons.jexl2.parser.ASTFunctionNode node,
                    Object data)
Specified by:
visit in interface org.apache.commons.jexl2.parser.ParserVisitor
Overrides:
visit in class QueryParser


Copyright © 2012 The Apache Software Foundation. All Rights Reserved.