Yes.. it is not related to this particular mail thread. I will post
separate mail.

Thanks
Sandeep


On Wed, Oct 23, 2013 at 4:36 PM, Jack Krupansky <j...@basetechnology.com>wrote:

> Not in just a few words. Do you have specific questions? I mean none of
> that relates to parsing of fq, the topic of this particular email thread,
> right?
>
> -- Jack Krupansky
>
> -----Original Message----- From: Sandeep Gupta
> Sent: Wednesday, October 23, 2013 3:58 AM
> To: solr-user@lucene.apache.org
> Subject: Re: Class name of parsing the fq clause
>
>
> Thanks Jack for detailing out the parser logic.
> Would it be possible for you to say something more about filter cache code
> flow...  sometimes we do not use fq parameter  in query string and pass the
> raw query....
>
> Regards
> Sandeep
>
>
> On Mon, Oct 21, 2013 at 7:11 PM, Jack Krupansky <j...@basetechnology.com>*
> *wrote:
>
>  Start with org.apache.solr.handler.****component.QueryComponent#****
>> prepare
>>
>> which fetches the fq parameters and indirectly invokes the query
>> parser(s):
>>
>> String[] fqs = req.getParams().getParams(****CommonParams.FQ);
>>
>> if (fqs!=null && fqs.length!=0) {
>>   List<Query> filters = rb.getFilters();
>>   // if filters already exists, make a copy instead of modifying the
>> original
>>   filters = filters == null ? new ArrayList<Query>(fqs.length) : new
>> ArrayList<Query>(filters);
>>   for (String fq : fqs) {
>>     if (fq != null && fq.trim().length()!=0) {
>>       QParser fqp = QParser.getParser(fq, null, req);
>>       filters.add(fqp.getQuery());
>>     }
>>   }
>>   // only set the filters if they are not empty otherwise
>>   // fq=&someotherParam= will trigger all docs filter for every request
>>   // if filter cache is disabled
>>   if (!filters.isEmpty()) {
>>     rb.setFilters( filters );
>>
>> Note that this line actually invokes the parser:
>>
>>       filters.add(fqp.getQuery());
>>
>> Then in org.apache.lucene.search.****Query.QParser#getParser:
>>
>> QParserPlugin qplug = req.getCore().getQueryPlugin(****parserName);
>> QParser parser =  qplug.createParser(qstr, localParams, req.getParams(),
>> req);
>>
>> And for the common case of the Lucene query parser,
>> org.apache.solr.search.
>> **LuceneQParserPlugin#****createParser:
>>
>>
>> public QParser createParser(String qstr, SolrParams localParams,
>> SolrParams params, SolrQueryRequest req) {
>>  return new LuceneQParser(qstr, localParams, params, req);
>> }
>>
>> And then in org.apache.lucene.search.****Query.QParser#getQuery:
>>
>>
>> public Query getQuery() throws SyntaxError {
>>  if (query==null) {
>>    query=parse();
>>
>> And then in org.apache.lucene.search.****Query.LuceneQParser#parse:
>>
>>
>> lparser = new SolrQueryParser(this, defaultField);
>>
>> lparser.setDefaultOperator
>>  (QueryParsing.****getQueryParserDefaultOperator(**
>> **getReq().getSchema(),
>>                                              getParam(QueryParsing.OP)));
>>
>> return lparser.parse(qstr);
>>
>> And then in org.apache.solr.parser.****SolrQueryParserBase#parse:
>>
>>
>> Query res = TopLevelQuery(null);  // pass null so we can tell later if an
>> explicit field was provided or not
>>
>> And then in org.apache.solr.parser.****QueryParser#TopLevelQuery, the
>> parsing begins.
>>
>> And org.apache.solr.parser.****QueryParser.jj is the grammar for a basic
>> Solr/Lucene query, and org.apache.solr.parser.****QueryParser.java is
>>
>> generated by JFlex, and a lot of the logic is in the base class of the
>> generated class, org.apache.solr.parser.****SolrQueryParserBase.java.
>>
>>
>> Good luck! Happy hunting!
>>
>> -- Jack Krupansky
>>
>> -----Original Message----- From: YouPeng Yang
>> Sent: Monday, October 21, 2013 2:57 AM
>> To: solr-user@lucene.apache.org
>> Subject: Class name of parsing the fq clause
>>
>>
>> Hi
>>   I search the solr with fq clause,which is like:
>>   fq=BEGINTIME:[2013-08-25T16:****00:00Z TO *] AND BUSID:(M30000 OR
>> M90000)
>>
>>
>>
>>   I am curious about the parsing process . I want to study it.
>>   What is the Java file name describes  the parsing  process of the fq
>> clause.
>>
>>
>>  Thanks
>>
>> Regards.
>>
>>
>

Reply via email to