/// <summary>
 /// 构造函数
 /// </summary>
 /// <param name="change">被修改的实体</param>
 public LuceneIndexChangeset(LuceneIndexChange change)
 {
     Entries = new List <LuceneIndexChange>
     {
         change
     };
 }
        ///// <summary>
        ///// 初始化索引库
        ///// </summary>
        ///// <param name="options"></param>
        //private void InitializeLucene(LuceneIndexerOptions options)
        //{
        //    if (_directory == null)
        //    {
        //        _directory = FSDirectory.Open(options.Path);
        //    }

        //    _analyzer = new JieBaAnalyzer(TokenizerMode.Search);
        //    LuceneIndexer = new LuceneIndexer(_directory, _analyzer);
        //    LuceneIndexSearcher = new LuceneIndexSearcher(_directory, _analyzer, _memoryCache);
        //}

        /// <summary>
        /// 检查数据库上下文更改,并返回LuceneIndexChanges类型的集合
        /// </summary>
        /// <returns> LuceneIndexChangeset  - 转换为LuceneIndexChanges类型的实体更改集合</returns>
        private LuceneIndexChangeset GetChangeset()
        {
            LuceneIndexChangeset changes = new LuceneIndexChangeset();

            foreach (var entity in Context.ChangeTracker.Entries().Where(x => x.State != EntityState.Unchanged))
            {
                Type entityType = entity.Entity.GetType();
                bool implementsILuceneIndexable = typeof(ILuceneIndexable).IsAssignableFrom(entityType);
                if (implementsILuceneIndexable)
                {
                    MethodInfo method = entityType.GetMethod("ToDocument");
                    if (method != null)
                    {
                        LuceneIndexChange change = new LuceneIndexChange(entity.Entity as ILuceneIndexable);

                        switch (entity.State)
                        {
                        case EntityState.Added:
                            change.State = LuceneIndexState.Added;
                            break;

                        case EntityState.Deleted:
                            change.State = LuceneIndexState.Removed;
                            break;

                        case EntityState.Modified:
                            change.State = LuceneIndexState.Updated;
                            break;

                        default:
                            change.State = LuceneIndexState.Unchanged;
                            break;
                        }
                        changes.Entries.Add(change);
                    }
                }
            }

            return(changes);
        }
コード例 #3
0
        /// <summary>
        /// 更新索引
        /// </summary>
        /// <param name="change">实体</param>
        public void Update(LuceneIndexChange change)
        {
            var changeset = new LuceneIndexChangeset(change);

            Update(changeset);
        }
コード例 #4
0
 /// <summary>
 /// 构造函数
 /// </summary>
 /// <param name="change">被修改的实体</param>
 public LuceneIndexChangeset(LuceneIndexChange change) => Entries = new List <LuceneIndexChange>