Hi,

You could use 2 query parsers, e.g., one for the user input and another one for 
the filters. Finally combine the 2 results into one query by combining them 
with an outer BooleanQuery. Having everything in one single string is quite 
uncommon for typical search application logic.

Uwe

-----
Uwe Schindler
Achterdiek 19, D-28357 Bremen
http://www.thetaphi.de
eMail: [email protected]

> -----Original Message-----
> From: Reda Kouba [mailto:[email protected]]
> Sent: Friday, December 2, 2016 8:33 AM
> To: [email protected]
> Subject: Re: Lucene filter
> 
> Hi Mikhail,
> 
> Do you have any suggestion to transform a string to a query object?
> thanks,
> reda
> 
> 
> > On 2 Dec. 2016, at 18:26, Mikhail Khludnev <[email protected]> wrote:
> >
> > Hello,
> >
> > I don't think # is supported in query parsers, although it would be great.
> > So, far I saw them in only in toString().
> >
> > On Fri, Dec 2, 2016 at 9:30 AM, Bouadjenek mohamed reda <
> > [email protected]> wrote:
> >
> >> Hi All,
> >>
> >>
> >> I wanna use a filter into a query (BooleanClause.Occur.FILTER). For
> >> example, my query is:
> >>
> >> #repository:clinicaltrials +title:multipl
> >>
> >> It looks like when I build the query from this String, the filter is not
> >> working. In other words, the total hits in the first example below is
> >> different from total hits in the second example below. Please, does
> anyone
> >> know what wrong with this simple example?
> >>
> >> Example 1:
> >> String query = "#repository:clinicaltrials +title:multipl";
> >> QueryParser qr = new QueryParser("", new StandardAnalyzer());
> >> TopDocs hits = is.search(qr.parse(query), 1);
> >>
> >> Example 2:
> >> String[] fields = new String[]{"repository", "title"};
> >> BooleanClause.Occur[] allflags = new
> >> BooleanClause.Occur[]{BooleanClause.Occur.FILTER,
> >> BooleanClause.Occur.MUST};
> >> String[] query_text = new String[]{"clinicaltrials", "multipl"};
> >> Query finalQuery = MultiFieldQueryParser.parse(query_text, fields,
> >> allflags, new StandardAnalyzer());
> >> TopDocs hits = is.search(finalQuery, 1);
> >>
> >>
> >> thanks,
> >>
> >>
> >> Best,
> >> reda
> >>
> >
> >
> >
> > --
> > Sincerely yours
> > Mikhail Khludnev

Reply via email to