コード例 #1
0
        private void RebuildIndex(Index index)
        {
            if (index == null)
            {
                return;
            }

            index.Rebuild();
        }
コード例 #2
0
        public void Initialize(Index index)
        {
            _logger = CreateLogger();
            _index  = index;
            _logger.Info("Crawler initialized");

            if (_triggers.Count == 0)
            {
                InitializeDefaultTriggers(index);
            }
            if (_rebuildTriggers.Count == 0)
            {
                InitializeDefaultRebuildTriggers(index);
            }

            foreach (var trigger in _triggers)
            {
                Event.Subscribe(trigger, HandleUpdateIndexEvent);
            }
            foreach (var trigger in _rebuildTriggers)
            {
                Event.Subscribe(trigger, HandleRebuildIndexEvent);
            }
        }
コード例 #3
0
 private void InitializeDefaultTriggers(Index index)
 {
     _triggers.Add("publish:end");
     _triggers.Add(String.Format("efocus:updateindex:{0}", index.Name.ToLower()));
 }
コード例 #4
0
 private void InitializeDefaultRebuildTriggers(Index index)
 {
     _rebuildTriggers.Add(String.Format("efocus:rebuildindex:{0}", index.Name.ToLower()));
 }
コード例 #5
0
        /// <summary>
        /// Gets the items from the GetIndexes()
        /// </summary>
        /// <param name="queryString">
        /// The query string.
        /// </param>
        /// <param name="useQueryParser">
        /// if set to <c>true</c> [use query parser].
        /// </param>
        /// <returns>
        /// Returns Query Result
        /// </returns>
        public QueryResult GetItems(string queryString, bool useQueryParser)
        {
            // Result object used to pass result and errormessages back to sender.
            QueryResult result = new QueryResult();

            List <string> indexes = this.GetIndexes();

            string[] resultItemIds = null;
            foreach (string indexName in indexes)
            {
                string       database = "master";
                HighResTimer timer    = new HighResTimer(true);

                // get the specified index
                Sitecore.Search.Index searchIndex = SearchManager.GetIndex(indexName);

                // get the database to perform the search in..
                Database db = Factory.GetDatabase(database);

                SearchHits hits;
                try
                {
                    if (useQueryParser)
                    {
                        using (IndexSearchContext searchContext = searchIndex.CreateSearchContext())
                        {
                            // get a new standard analyser so we can create a query..
                            Analyzer    analyzer    = new StandardAnalyzer(Lucene.Net.Util.Version.LUCENE_30);
                            QueryParser queryParser = new QueryParser(Lucene.Net.Util.Version.LUCENE_30, queryString, analyzer);
                            Query       qry         = queryParser.Query("_content");
                            hits = searchContext.Search(qry, int.MaxValue);
                        }
                    }
                    else
                    {
                        using (IndexSearchContext searchContext = searchIndex.CreateSearchContext())
                        {
                            // perform the search and get the results back as a Hits list..
                            hits = searchContext.Search(queryString, int.MaxValue);
                        }
                    }

                    result.Success = true;

                    resultItemIds = new string[hits.Length];

                    int i = 0;

                    foreach (Document document in hits.Documents)
                    {
                        string str = document.Get("_docID");
                        resultItemIds[i++] = str;
                    }
                }
                catch (ParseException e)
                {
                    result.ErrorMessage   = e.Message;
                    result.ParseException = e;
                    result.Success        = false;
                }
            }

            result.Result = resultItemIds;
            return(result);
        }