Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- --- C:\Users\xyt\AppData\Local\Temp\AnkhSVN\3179\QueryParser.27919.cs 20.04.2012 08:55:36
- +++ C:\_VS.NET\se\Lucene-2_9_4\core\QueryParser\QueryParser.cs 17.04.2012 12:25:02
- /// <summary> Factory method for generating a query (similar to
- /// <see cref="GetWildcardQuery" />). Called when parser parses an input term
- /// token that uses prefix notation; that is, contains a single '*' wildcard
- /// character as its last character. Since this is a special case
- /// of generic wildcard term, and such a query can be optimized easily,
- /// this usually results in a different query object.
- /// <p/>
- /// Depending on settings, a prefix term may be lower-cased
- /// automatically. It will not go through the default Analyzer,
- /// however, since normal Analyzers are unlikely to work properly
- /// with wildcard templates.
- /// <p/>
- /// Can be overridden by extending classes, to provide custom handling for
- /// wild card queries, which may be necessary due to missing analyzer calls.
- ///
- /// </summary>
- /// <param name="field">Name of the field query will use.
- /// </param>
- /// <param name="termStr">Term token to use for building term for the query
- /// (<b>without</b> trailing '*' character!)
- ///
- /// </param>
- /// <returns> Resulting <see cref="Query" /> built for the term
- /// </returns>
- /// <exception cref="ParseException">throw in overridden method to disallow
- /// </exception>
- public /*protected internal*/ virtual Query GetPrefixQuery(System.String field, System.String termStr)
- {
- if (!allowLeadingWildcard && termStr.StartsWith("*"))
- throw new ParseException("'*' not allowed as first character in PrefixQuery");
- if (lowercaseExpandedTerms)
- {
- termStr = termStr.ToLower();
- }
- - Term t = new Term(field, termStr);
- + Term t = null;
- + TermQuery q = null;
- + try
- + {
- + q = GetFieldQuery(field, termStr) as TermQuery;
- + }
- + catch(Exception ex)
- + {
- + }
- + if (q != null)
- + {
- + t = new Term(field, q.GetTerm().text);
- + }
- + else
- + {
- + t = new Term(field, termStr);
- + }
- return NewPrefixQuery(t);
- }
Advertisement
Add Comment
Please, Sign In to add comment