コード例 #1
0
        /// <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);
            }
        }
コード例 #2
0
        /// <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);
        }
コード例 #3
0
        /// <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);
            }
        }
コード例 #4
0
 /// <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;
 }