/// <summary> /// Takes the manaually generated query and runs it through a Lucene analyzer /// </summary> /// <param name="analyzer">Analyzer to use when parsing this query</param> /// <param name="occurrence">Occurrence type of this query</param> internal void Analyze(Lucene29.Net.Analysis.Analyzer analyzer, ClauseOccurrence occurrence) { if (analyzer == null) { throw new ArgumentNullException("analyzer", "Analyzer cannot be null"); } try { AnalyzerType requestedType = TypeConverter.GetAnalyzerType(analyzer); if (cachedAnalyzer != requestedType) { lock (syncRoot) { if (cachedAnalyzer != requestedType) { cachedParser = new Lucene29.Net.QueryParsers.QueryParser(StaticValues.LibraryVersion, "Analyzer", analyzer); cachedAnalyzer = requestedType; cachedParser.SetAllowLeadingWildcard(this.allowLeadingWildcard); } } } Query query = cachedParser.Parse(this.luceneQuery.ToString()); this.luceneQuery = null; this.luceneQuery = new BooleanQuery(this.disableCoord); this.luceneQuery.Add(query, TypeConverter.ConvertToLuceneClauseOccurrence(occurrence)); } catch (Exception ex) { throw new FormatException("There was an unexpected exception thrown during the analyzing process of the instance.", ex); } }
/// <summary> /// Adds the string query. /// </summary> /// <param name="queryText">The query text.</param> /// <param name="occurrence">The occurrence.</param> /// <param name="analyzerType">Type of the analyzer.</param> /// <param name="merge">if set to <c>true</c> [merge].</param> /// <returns>True if query string is parsed and appended successfully</returns> public bool AddStringQuery(string queryText, ClauseOccurrence occurrence, AnalyzerType analyzerType, bool merge) { if (string.IsNullOrEmpty(queryText)) { throw new ArgumentNullException("queryText", "queryText cannot be null or empty"); } // this try catch is here to protect you from lucene specific exceptions bool success = true; IncrementTotalClauses(1); try { Lucene29.Net.QueryParsers.QueryParser parser = new Lucene29.Net.QueryParsers.QueryParser(StaticValues.LibraryVersion, "QueryParser", TypeConverter.GetAnalyzer(analyzerType)); Query query = parser.Parse(queryText); if (query == null) { success = false; } else { if (merge) { this.luceneQuery.Combine(new Query[] { query }); } else { this.luceneQuery.Add(query, TypeConverter.ConvertToLuceneClauseOccurrence(occurrence)); } } } catch (Exception) { //System.Diagnostics.Debug.WriteLine("Lucene exception -> " + ex.Message); success = false; this.totalClauses--; } return(success); }
/// <summary> /// Takes the manaually generated query and runs it through a Lucene analyzer /// </summary> /// <param name="analyzer">Analyzer to use when parsing this query</param> /// <param name="occurrence">Occurrence type of this query</param> internal void Analyze(Lucene29.Net.Analysis.Analyzer analyzer, ClauseOccurrence occurrence) { if (analyzer == null) throw new ArgumentNullException("analyzer", "Analyzer cannot be null"); try { AnalyzerType requestedType = TypeConverter.GetAnalyzerType(analyzer); if (cachedAnalyzer != requestedType) { lock (syncRoot) { if (cachedAnalyzer != requestedType) { cachedParser = new Lucene29.Net.QueryParsers.QueryParser(StaticValues.LibraryVersion, "Analyzer", analyzer); cachedAnalyzer = requestedType; cachedParser.SetAllowLeadingWildcard(this.allowLeadingWildcard); } } } Query query = cachedParser.Parse(this.luceneQuery.ToString()); this.luceneQuery = null; this.luceneQuery = new BooleanQuery(this.disableCoord); this.luceneQuery.Add(query, TypeConverter.ConvertToLuceneClauseOccurrence(occurrence)); } catch (Exception ex) { throw new FormatException("There was an unexpected exception thrown during the analyzing process of the instance.", ex); } }
/// <summary> /// Adds the string query. /// </summary> /// <param name="queryText">The query text.</param> /// <param name="occurrence">The occurrence.</param> /// <param name="analyzerType">Type of the analyzer.</param> /// <param name="merge">if set to <c>true</c> [merge].</param> /// <returns>True if query string is parsed and appended successfully</returns> public bool AddStringQuery(string queryText, ClauseOccurrence occurrence, AnalyzerType analyzerType, bool merge) { if (string.IsNullOrEmpty(queryText)) throw new ArgumentNullException("queryText", "queryText cannot be null or empty"); // this try catch is here to protect you from lucene specific exceptions bool success = true; IncrementTotalClauses(1); try { Lucene29.Net.QueryParsers.QueryParser parser = new Lucene29.Net.QueryParsers.QueryParser(StaticValues.LibraryVersion, "QueryParser", TypeConverter.GetAnalyzer(analyzerType)); Query query = parser.Parse(queryText); if (query == null) { success = false; } else { if (merge) this.luceneQuery.Combine(new Query[] { query }); else this.luceneQuery.Add(query, TypeConverter.ConvertToLuceneClauseOccurrence(occurrence)); } } catch (Exception) { //System.Diagnostics.Debug.WriteLine("Lucene exception -> " + ex.Message); success = false; this.totalClauses--; } return success; }