> 2) if I have to accept whole input string with all logic (AND, OR, ..) inside,
>    I think it is easier to change TermQuery afterwards than parsing the 
> string,
>    since final result from query parser should be BooleanQuery (in your
> example),
>    then we iterate through each BooleanClause, if the clause is still
> BooleanQuery,
>    recursively go deep, if TermQuery, we may try to convert to
> WildCardQuery?

protected static void wildcardQuery(Query query) {
                if (query instanceof BooleanQuery) {
                        BooleanQuery bQuery = (BooleanQuery)query;
                        for (BooleanClause clause: bQuery.getClauses()) {
                                if (clause.getQuery() instanceof TermQuery) {
                                        Term term = 
((TermQuery)clause.getQuery()).getTerm();
                                        clause.setQuery(new WildcardQuery(new 
Term(term.field(), "*" + term.text() + "*")));
                                }
                                else
                                        wildcardQuery(clause.getQuery());
                        }                       
                } 
        }

Does the trick (as long as the original query is a BooleanQuery). Thanks for 
the suggestion!
-Chris

---------------------------------------------------------------------
To unsubscribe, e-mail: java-user-unsubscr...@lucene.apache.org
For additional commands, e-mail: java-user-h...@lucene.apache.org

Reply via email to