Hi Uwe,

Thank you for your suggestion. In fact, it’s for an IR challenge. No intent to 
use my code for end-users.
best,
reda
> On 2 Dec. 2016, at 19:38, Uwe Schindler <u...@thetaphi.de> wrote:
> 
> 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: u...@thetaphi.de
> 
>> -----Original Message-----
>> From: Reda Kouba [mailto:redateksys...@gmail.com]
>> Sent: Friday, December 2, 2016 8:33 AM
>> To: general@lucene.apache.org
>> 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 <m...@apache.org> 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 <
>>> redateksys...@gmail.com> 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