Ejemplo n.º 1
0
        public ActionResult Reindex()
        {
            var contentIndexer = new ContentIndexer();
            var products       = new ProductRepository().GetAll().Select(x => x.ToModel()).ToList();
            var count          = 0;
            var batch          = 100;
            var productList    = new List <ProductModel>();

            for (int i = 0; i < products.Count; i++)
            {
                var product = products[i];
                count++;
                productList.Add(product);
                if (count == batch || i == products.Count - 1)
                {
                    count = 0;
                    contentIndexer.IndexMany(productList);
                    productList = new List <ProductModel>();
                }
            }
            using (var context = new RedisContext())
            {
                context.Database.Execute("flushdb");
            }
            return(new EmptyResult());
        }
Ejemplo n.º 2
0
        // 按指定的 AQS 语法从索引器中查询数据
        private async void ExecuteQueryHelper(string queryString)
        {
            lblMsg.Text = "";
            var indexer = ContentIndexer.GetIndexer();

            // 需要检索的属性
            string[] propertyKeys =
            {
                SystemProperties.Title,
                SystemProperties.Keywords,
                SystemProperties.Comment
            };
            // 指定 AQS 字符串(Advanced Query Syntax),参见 http://msdn.microsoft.com/zh-cn/library/windows/apps/aa965711.aspx
            var query = indexer.CreateQuery(queryString, propertyKeys);

            // 执行查询,并获取结果
            var documents = await query.GetAsync();

            foreach (var document in documents)
            {
                string itemString = "Key: " + document.Id + "\n";
                foreach (var propertyKey in propertyKeys)
                {
                    itemString += propertyKey + ": " + StringifyProperty(document.Properties[propertyKey]) + "\n";
                }
                lblMsg.Text += itemString + "\n";
            }
        }
        public IHttpActionResult RebuildContentIndex([FromBody] string indexName)
        {
            var indexer = new ContentIndexer();

            indexer.Build(indexName);

            return(Ok());
        }
Ejemplo n.º 4
0
        public override void SetUp()
        {
            base.SetUp();

            root     = CreateOneItem <PersistableItem>(1, "The Root Page", null);
            indexer  = new ContentIndexer(new IndexerClient(new Configuration.DatabaseSection()), new TextExtractor(new IndexableDefinitionExtractor(definitions)));
            searcher = new SearcherClient(persister, new Configuration.DatabaseSection());

            indexer.Clear();
        }
Ejemplo n.º 5
0
        public override void SetUp()
        {
            base.SetUp();

            accessor = new LuceneAccesor(new ThreadContext(), new DatabaseSection());
            indexer  = new ContentIndexer(new LuceneIndexer(accessor), new TextExtractor(new IndexableDefinitionExtractor(definitions)));
            searcher = new LuceneContentSearcher(accessor, persister);

            indexer.Clear();
        }
Ejemplo n.º 6
0
        public ActionResult RedisReindex()
        {
            var contentIndexer = new ContentIndexer();
            var products       = new ProductRepository().GetAll().Select(x => x.ToModel()).ToList();

            using (var context = new RedisContext())
            {
                context.Database.Execute("flushdb");
                foreach (var product in products)
                {
                    context.Database.StringSet(product.CacheKey, JsonConvert.SerializeObject(product));
                }
            }
            return(new EmptyResult());
        }
Ejemplo n.º 7
0
        public override void SetUp()
        {
            base.SetUp();

            var definitions = TestSupport.SetupDefinitions(typeof(PersistableItem), typeof(PersistableItem2), typeof(PersistablePart));

            accessor     = new LuceneAccesor(new ThreadContext(), new DatabaseSection());
            indexer      = new ContentIndexer(new LuceneIndexer(accessor), new TextExtractor(new IndexableDefinitionExtractor(definitions)));
            searcher     = new LuceneContentSearcher(accessor, persister);
            worker       = new AsyncWorker();
            asyncIndexer = new AsyncIndexer(indexer, persister, worker, Rhino.Mocks.MockRepository.GenerateStub <IErrorNotifier>(), new DatabaseSection());
            tracker      = new ContentChangeTracker(asyncIndexer, persister, new N2.Plugin.ConnectionMonitor(), new DatabaseSection());

            accessor.LockTimeout = 1L;
            indexer.Clear();
            root = CreateOneItem <PersistableItem>(1, "The Root Page", null);
        }
Ejemplo n.º 8
0
        // 添加数据到索引器
        private async void btnAddToIndexer_Click(object sender, RoutedEventArgs e)
        {
            // 获取一个索引器(可以指定索引器的名字,从而达到对索引器分类的目的)
            var indexer = ContentIndexer.GetIndexer();
            var content = new IndexableContent();

            for (int i = 0; i < 100; i++)
            {
                content.Properties[SystemProperties.Title]    = "Title: " + i.ToString().PadLeft(2, '0');
                content.Properties[SystemProperties.Keywords] = "Keywords: " + i.ToString().PadLeft(2, '0'); // 多个用“;”隔开
                content.Properties[SystemProperties.Comment]  = "Comment: " + i.ToString().PadLeft(2, '0');
                content.Id = "key" + i;                                                                      // 标识,增加同标识的索引就是更新

                // 增加一个索引(另外还有 Update 和 Delete 操作)
                await indexer.AddAsync(content);
            }
        }