QueryTermExtractorpublic final class QueryTermExtractor extends Object Utility class used to extract the terms used in a query, plus any weights.
This class will not find terms for MultiTermQuery, RangeQuery and PrefixQuery classes
so the caller must pass a rewritten query (see Query.rewrite) to obtain a list of
expanded terms. |
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)
try
{
HashSet nonWeightedTerms=new HashSet();
query.extractTerms(nonWeightedTerms);
for (Iterator iter = nonWeightedTerms.iterator(); iter.hasNext();)
{
Term term = (Term) iter.next();
if((fieldName==null)||(term.field()==fieldName))
{
terms.add(new WeightedTerm(query.getBoost(),term.text()));
}
}
}
catch(UnsupportedOperationException ignore)
{
//this is non-fatal for our purposes
}
|
|