Methods Summary |
---|
public static final WeightedTerm[] | getIdfWeightedTerms(org.apache.lucene.search.Query query, org.apache.lucene.index.IndexReader reader, java.lang.String fieldName)Extracts all terms texts of a given Query into an array of WeightedTerms
WeightedTerm[] terms=getTerms(query,false, fieldName);
int totalNumDocs=reader.numDocs();
for (int i = 0; i < terms.length; i++)
{
try
{
int docFreq=reader.docFreq(new Term(fieldName,terms[i].term));
//IDF algorithm taken from DefaultSimilarity class
float idf=(float)(Math.log((float)totalNumDocs/(double)(docFreq+1)) + 1.0);
terms[i].weight*=idf;
}
catch (IOException e)
{
//ignore
}
}
return terms;
|
public static final WeightedTerm[] | getTerms(org.apache.lucene.search.Query query)Extracts all terms texts of a given Query into an array of WeightedTerms
return getTerms(query,false);
|
public static final WeightedTerm[] | getTerms(org.apache.lucene.search.Query query, boolean prohibited, java.lang.String fieldName)Extracts all terms texts of a given Query into an array of WeightedTerms
HashSet terms=new HashSet();
if(fieldName!=null)
{
fieldName=fieldName.intern();
}
getTerms(query,terms,prohibited,fieldName);
return (WeightedTerm[]) terms.toArray(new WeightedTerm[0]);
|
public static final WeightedTerm[] | getTerms(org.apache.lucene.search.Query query, boolean prohibited)Extracts all terms texts of a given Query into an array of WeightedTerms
return getTerms(query,prohibited,null);
|
private static final void | getTerms(org.apache.lucene.search.Query query, java.util.HashSet terms, boolean prohibited, java.lang.String fieldName)
if (query instanceof BooleanQuery)
getTermsFromBooleanQuery((BooleanQuery) query, terms, prohibited, fieldName);
else
if (query instanceof PhraseQuery)
getTermsFromPhraseQuery((PhraseQuery) query, terms, fieldName);
else
if (query instanceof TermQuery)
getTermsFromTermQuery((TermQuery) query, terms, fieldName);
else
if(query instanceof SpanNearQuery)
getTermsFromSpanNearQuery((SpanNearQuery) query, terms, fieldName);
|
private static final void | getTermsFromBooleanQuery(org.apache.lucene.search.BooleanQuery query, java.util.HashSet terms, boolean prohibited, java.lang.String fieldName)
BooleanClause[] queryClauses = query.getClauses();
int i;
for (i = 0; i < queryClauses.length; i++)
{
//Pre Lucene 2.0 code
// if (prohibited || !queryClauses[i].prohibited)
// getTerms(queryClauses[i].query, terms, prohibited, fieldName);
// Lucene 2.0 ready code
if (prohibited || queryClauses[i].getOccur()!=BooleanClause.Occur.MUST_NOT)
getTerms(queryClauses[i].getQuery(), terms, prohibited, fieldName);
}
|
private static final void | getTermsFromPhraseQuery(org.apache.lucene.search.PhraseQuery query, java.util.HashSet terms, java.lang.String fieldName)
Term[] queryTerms = query.getTerms();
int i;
for (i = 0; i < queryTerms.length; i++)
{
if((fieldName==null)||(queryTerms[i].field()==fieldName))
{
terms.add(new WeightedTerm(query.getBoost(),queryTerms[i].text()));
}
}
|
private static final void | getTermsFromSpanNearQuery(org.apache.lucene.search.spans.SpanNearQuery query, java.util.HashSet terms, java.lang.String fieldName)
Collection queryTerms = query.getTerms();
for(Iterator iterator = queryTerms.iterator(); iterator.hasNext();){
// break it out for debugging.
Term term = (Term) iterator.next();
String text = term.text();
if((fieldName==null)||(term.field()==fieldName))
{
terms.add(new WeightedTerm(query.getBoost(), text));
}
}
|
private static final void | getTermsFromTermQuery(org.apache.lucene.search.TermQuery query, java.util.HashSet terms, java.lang.String fieldName)
if((fieldName==null)||(query.getTerm().field()==fieldName))
{
terms.add(new WeightedTerm(query.getBoost(),query.getTerm().text()));
}
|