*/\r
\r
import org.apache.lucene.document.Document;\r
+import org.apache.lucene.index.Term;\r
import org.apache.lucene.queryParser.ParseException;\r
+import org.apache.lucene.queryParser.QueryParser;\r
+import org.apache.lucene.search.BooleanClause;\r
+import org.apache.lucene.search.BooleanQuery;\r
import org.apache.lucene.search.Hits;\r
import org.apache.lucene.search.IndexSearcher;\r
+import org.apache.lucene.search.TermQuery;\r
import org.apache.maven.artifact.Artifact;\r
import org.apache.maven.artifact.factory.ArtifactFactory;\r
import org.apache.maven.artifact.repository.ArtifactRepository;\r
import org.apache.maven.artifact.repository.metadata.io.xpp3.MetadataXpp3Reader;\r
import org.apache.maven.model.Model;\r
import org.apache.maven.model.io.xpp3.MavenXpp3Reader;\r
+import org.apache.maven.repository.indexing.query.CompoundQuery;\r
+import org.apache.maven.repository.indexing.query.CompoundQueryTerm;\r
import org.apache.maven.repository.indexing.query.Query;\r
+import org.apache.maven.repository.indexing.query.RangeQuery;\r
+import org.apache.maven.repository.indexing.query.SingleTermQuery;\r
import org.codehaus.plexus.logging.AbstractLogEnabled;\r
import org.codehaus.plexus.util.IOUtil;\r
import org.codehaus.plexus.util.xml.pull.XmlPullParserException;\r
import java.util.ArrayList;\r
import java.util.Collections;\r
import java.util.HashMap;\r
+import java.util.Iterator;\r
import java.util.List;\r
import java.util.Map;\r
import java.util.StringTokenizer;\r
org.apache.lucene.search.Query luceneQuery;\r
try\r
{\r
- luceneQuery = query.createLuceneQuery( index );\r
+ luceneQuery = createLuceneQuery( query, index );\r
}\r
catch ( ParseException e )\r
{\r
return docs;\r
}\r
\r
+ private org.apache.lucene.search.Query createLuceneQuery( Query query, RepositoryIndex index )\r
+ throws ParseException\r
+ {\r
+ org.apache.lucene.search.Query luceneQuery = null;\r
+ // TODO: hacked in temporarily\r
+ if ( query instanceof CompoundQuery )\r
+ {\r
+ BooleanQuery booleanQuery = new BooleanQuery();\r
+ List queries = ( (CompoundQuery) query ).getCompoundQueryTerms();\r
+ for ( Iterator i = queries.iterator(); i.hasNext(); )\r
+ {\r
+ CompoundQueryTerm queryTerm = (CompoundQueryTerm) i.next();\r
+\r
+ booleanQuery.add( createLuceneQuery( queryTerm.getQuery(), index ), queryTerm.isRequired()\r
+ ? BooleanClause.Occur.MUST\r
+ : queryTerm.isProhibited() ? BooleanClause.Occur.MUST_NOT : BooleanClause.Occur.SHOULD );\r
+ }\r
+ luceneQuery = booleanQuery;\r
+ }\r
+ else if ( query instanceof SingleTermQuery )\r
+ {\r
+ org.apache.lucene.search.Query qry;\r
+ if ( index.isKeywordField( ( (SingleTermQuery) query ).getField() ) )\r
+ {\r
+ qry = new TermQuery(\r
+ new Term( ( (SingleTermQuery) query ).getField(), ( (SingleTermQuery) query ).getValue() ) );\r
+ }\r
+ else\r
+ {\r
+ // TODO: doesn't seem like the right place for this here!\r
+ QueryParser parser = new QueryParser( ( (SingleTermQuery) query ).getField(), index.getAnalyzer() );\r
+ qry = parser.parse( ( (SingleTermQuery) query ).getValue() );\r
+ }\r
+ luceneQuery = qry;\r
+ }\r
+ else if ( query instanceof RangeQuery )\r
+ {\r
+ Term beginTerm = null;\r
+ if ( ( (RangeQuery) query ).getBegin() != null )\r
+ {\r
+ beginTerm = new Term( ( (RangeQuery) query ).getBegin().getField(),\r
+ ( (RangeQuery) query ).getBegin().getValue() );\r
+ }\r
+ Term endTerm = null;\r
+ if ( ( (RangeQuery) query ).getEnd() != null )\r
+ {\r
+ endTerm =\r
+ new Term( ( (RangeQuery) query ).getEnd().getField(), ( (RangeQuery) query ).getEnd().getValue() );\r
+ }\r
+ luceneQuery =\r
+ new org.apache.lucene.search.RangeQuery( beginTerm, endTerm, ( (RangeQuery) query ).isInclusive() );\r
+ }\r
+ return luceneQuery;\r
+ }\r
+\r
private RepositoryIndexSearchHit createSearchedObjectFromIndexDocument( Document doc,\r
ArtifactRepository repository )\r
throws RepositoryIndexSearchException\r
* limitations under the License.
*/
-import org.apache.lucene.queryParser.ParseException;
-import org.apache.lucene.search.BooleanClause;
-import org.apache.lucene.search.BooleanQuery;
-import org.apache.maven.repository.indexing.RepositoryIndex;
-
import java.util.ArrayList;
-import java.util.Iterator;
import java.util.List;
/**
return compoundQueryTerms;
}
- // TODO! relocate
- public org.apache.lucene.search.Query createLuceneQuery( RepositoryIndex index )
- throws ParseException
- {
- BooleanQuery booleanQuery = new BooleanQuery();
- List queries = this.compoundQueryTerms;
- for ( Iterator i = queries.iterator(); i.hasNext(); )
- {
- CompoundQueryTerm queryTerm = (CompoundQueryTerm) i.next();
-
- booleanQuery.add( queryTerm.getQuery().createLuceneQuery( index ), queryTerm.isRequired()
- ? BooleanClause.Occur.MUST
- : queryTerm.isProhibited() ? BooleanClause.Occur.MUST_NOT : BooleanClause.Occur.SHOULD );
- }
- return booleanQuery;
- }
}
* limitations under the License.
*/
-import org.apache.lucene.index.Term;
-import org.apache.lucene.queryParser.ParseException;
-import org.apache.lucene.queryParser.QueryParser;
-import org.apache.lucene.search.TermQuery;
-import org.apache.maven.repository.indexing.RepositoryIndex;
-
/**
* Query for a single term.
*
this.term = new QueryTerm( field, value );
}
- /**
- * @todo! this seems like the wrong place for this (it's back to front - create the query from the index
- */
- public org.apache.lucene.search.Query createLuceneQuery( RepositoryIndex index )
- throws ParseException
- {
- org.apache.lucene.search.Query qry;
- if ( index.isKeywordField( term.getField() ) )
- {
- qry = new TermQuery( new Term( term.getField(), term.getValue() ) );
- }
- else
- {
- // TODO: doesn't seem like the right place for this here!
- QueryParser parser = new QueryParser( term.getField(), index.getAnalyzer() );
- qry = parser.parse( term.getValue() );
- }
- return qry;
- }
-
public String getField()
{
return term.getField();